Dmi*_*try 14 model mongoose node.js
学科.我想在它的静态方法中初始化一个新的模型实例:
var Schema = new mongoose.Schema({...});
//...
Schema.statics.createInstance = function (name, pass) {
var newPerson = new Person; // <--- or 'this', or 'Schema'?
newPerson.name = name;
newPerson.pass = pass;
newPerson.save();
return newPerson;
}
// ...
module.exports = db.model("Person", Schema);
Run Code Online (Sandbox Code Playgroud)
我怎么能这样做?
Joh*_*yHK 27
你走在正确的轨道上; this是架构在schema.statics方法中注册的模型,因此您的代码应更改为:
Schema.statics.createInstance = function (name, pass) {
var newPerson = new this();
newPerson.name = name;
newPerson.pass = pass;
newPerson.save();
return newPerson;
}
Run Code Online (Sandbox Code Playgroud)
Leonid对于处理save回调是正确的,即使它只是为了记录错误.
你几乎回答了你的问题。您的代码的唯一问题是您目前没有注册模型。但您可以使用mongoose.model动态获取它:
Schema.statics.createInstance = function (name, pass) {
var newPerson = new db.model('Person'); // <- Fetch model "on the fly"
newPerson.name = name;
newPerson.pass = pass;
newPerson.save();
return newPerson;
}
Run Code Online (Sandbox Code Playgroud)
噢。并考虑处理save回调。您无法确定save操作不会失败。