MongooseJS无法更新数值

时间:2012-07-05 11:00:17

标签: model mongoose updates

使用此user.meta.logins.$inc();时,我在控制台中收到此错误:

  

Mongoose MongooseNumber#$ inc / MongooseNumber#increment已弃用。   使用Model.update()代替v3中的增量。

我所做的就是这个(代码被剥离到基本用法):

userSchema.methods = {
  userFind : function (user, pass, callback) {
    this.model('user').findOne({ 'username':user, 'password':pass }, callback); 
  }
}

var userModel = new model();
userModel.userFind(username, password, function(err, user) {
  user.meta.logins.$inc();
  user.meta.last_action = new Date();                   
  user.save();
});

这很好用,但由于弃用即将到来,我想使用建议的Model.update()方法来更新用户,但是我无法实现。

我尝试过userModel.update()user.update(),但在这两种情况下我都会遇到错误。也许我的语法对于更新是错误的。

非常感谢任何想法。

2 个答案:

答案 0 :(得分:0)

要使用update

userModel.update(
  { 'username': user, 'password': pass },
  { $inc: { logins: 1 }, $set: { last_action: new Date() }},
  function(err, numAffected) {
    ...
});

答案 1 :(得分:0)

所以这就是问题和解决方案:

定义Schema.methods时,必须创建模型的实例才能使用它们:

var myModel = new Model();
myModel.mySchemaMethod();

导致问题,因为模型自己的方法(例如Model.update)不再可访问。

在这种情况下,方法应该定义为静态,因此不需要实例,并且一切正常:

myModel.mySchemaStatic();