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(...)