Mongoose/NodeJS定义用于保存文档的静态/方法

use*_*306 1 mongoose mongodb node.js

我想定义我自己的静态/方法来保存我的模型的文档.

我试过这个:

userSchema.statics.saveUser = function(data, callback){
    data.save(callback);
};
Run Code Online (Sandbox Code Playgroud)

它说data.save()不是一个函数.它无法识别该功能.

然后我试了这个

userSchema.statics.saveUser = function(data, callback){
    data = new userSchema(data);
    data.save(callback);
};
Run Code Online (Sandbox Code Playgroud)

userSchema不是一个函数.

And*_*ren 6

方法和静力学是不一样的.前者在文档(模型实例)上找到,而后者在模型上找到.如果上述内容旨在用作静态,创建用户或其他内容,您将:

userModel.saveUser();
Run Code Online (Sandbox Code Playgroud)

但是,由于你没有传递任何数据,我真的没有看到会有什么好处.如果您将其创建为方法,它将如下所示:

userSchema.methods.saveUser = function(callback){
    user.save(callback);
};
Run Code Online (Sandbox Code Playgroud)

你会称之为:

var doc = new userModel();
// Set stuff
doc.saveUser();
Run Code Online (Sandbox Code Playgroud)

在不知道你真正想做什么的情况下,很难说哪种方式更适合你的情况.