Mongoose / NodeJS定义静态/保存文档的方法
我想定义我自己的静态/方法保存我的模型文件。
我试过这个:
userSchema.statics.saveUser = function(data, callback){ data.save(callback); };
它说data.save()不是一个函数。 它不能识别该function。
然后我试了一下
userSchema.statics.saveUser = function(data, callback){ data = new userSchema(data); data.save(callback); };
userSchema不是一个函数。
方法和静态是不一样的。 前者在文档(模型实例)上find,而后者在模型上。 如果上述意图被用作静态,创build一个用户或什么东西,你会:
userModel.saveUser();
但是,我不明白这样做会有什么好处,因为你没有传递任何数据。 如果您将其作为一种方法来创build,它将如下所示:
userSchema.methods.saveUser = function(callback){ user.save(callback); };
你可以这样称呼它:
var doc = new userModel(); // Set stuff doc.saveUser();
不知道你真正想要做什么,很难说在你的情况下哪种方式更可取。
当你想要做模型相关的东西(比如“findAllByFirstName”)的时候使用静态属性它们不是用来与模型的实例进行交互的(用户将是你模型的一个实例)
如果你想将一个模型的实例保存到mongo中,那么方法就是要走的路。
可能你想要做这样的事情:
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(...)