我想定义自己的静态/方法,保存我的模型文档。
我试过这个:
userSchema.statics.saveUser = function(data, callback){
data.save(callback);
};
它说data.save()不是一个函数。它无法识别该功能。
然后我尝试了这个
userSchema.statics.saveUser = function(data, callback){
data = new userSchema(data);
data.save(callback);
};
userSchema不是一个函数。
答案 0 :(得分:5)
方法和静力学不一样。前者在文档(模型实例)上找到,而后者在模型上找到。如果上述内容旨在用作静态,创建用户或其他内容,您可以:
userModel.saveUser();
然而,由于你没有传递任何数据,我真的没有看到会有什么好处。如果您将其创建为方法,它将如下所示:
userSchema.methods.saveUser = function(callback){
user.save(callback);
};
你会这样称呼:
var doc = new userModel();
// Set stuff
doc.saveUser();
在不知道你真正想做什么的情况下,很难说哪种方式更适合你的情况。
答案 1 :(得分:2)
当您想要进行与模型相关的内容(例如“findAllByFirstName”)时,会使用静态 它们不是用于与模型实例交互(用户将是模型的实例)
如果要将模型实例保存到mongo中,则可以采用方法。
答案 2 :(得分:1)
schema.statics.user = function() {
var model = this.model("user");
return {
login:require('./resources/user/login.js'),
signin:require('./resources/user/signin.js')
}
}
var model = mongoose.model("<name>",schema);
var user = model.user();
user.login(...)
user.signin(...)