1

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

我试过这个:

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 不是函数。

4

3 回答 3

6

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

userModel.saveUser();

但是,由于您没有向其传递任何数据,因此我真的看不出有什么好处。如果您改为将其创建为方法,它将如下所示:

userSchema.methods.saveUser = function(callback){
    user.save(callback);
};

你会这样称呼它:

var doc = new userModel();
// Set stuff
doc.saveUser();

在不知道您实际想要做什么的情况下,很难说哪种方式更适合您的情况。

于 2013-10-31T10:43:08.547 回答
2

当您想要做与模型相关的事情时使用静态(例如“findAllByFirstName”)它们不用于与模型实例交互(用户将是您模型的实例)

如果您想将模型的实例保存到 mongo 中,那么方法就是要走的路。

于 2013-10-31T10:37:05.217 回答
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(...)
于 2015-03-04T22:39:21.253 回答