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