Node.js 如何在同一模型中创建模型实例';s模式方法?

Node.js 如何在同一模型中创建模型实例';s模式方法?,node.js,model,mongoose,Node.js,Model,Mongoose,主题。我想在it静态方法中初始化一个新的模型实例: 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

主题。我想在it静态方法中初始化一个新的模型实例:

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);
var Schema=newmongoose.Schema({…});
//...
Schema.statics.createInstance=函数(名称、过程){

var newPerson=new Person;//您几乎回答了您的问题。您的代码的唯一问题是此时您没有注册的模型。但是您可以使用
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;
}
Schema.statics.createInstance=函数(名称,过程){

var newPerson=new db.model('Person');//您的思路是正确的;
这是架构在
架构中注册的模型。statics
方法,因此您的代码应更改为:

Schema.statics.createInstance = function (name, pass) {
    var newPerson = new this();
    newPerson.name = name;
    newPerson.pass = pass;
    newPerson.save();
    return newPerson;
}

Leonid在处理
save
回调方面是正确的,即使它只是记录错误。

所以,tnx用于响应。但最正确的答案是:1.对于使用模型的静态方法,我们可以使用动态加载模型。
db.model('Person').countComments()为了创建同一模型的新实例,我们只需要使用
var person=newthis;