当使用这种user.meta.logins.$inc();
我得到这个错误在控制台:MongooseJS不能更新数值
Mongoose MongooseNumber#$inc/MongooseNumber#increment is deprecated. Use Model.update() to get incrementation in v3 instead.
我所斋做的是这个(代码被剥离下来的基本用法):
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()
但在两种情况下我都会收到错误。也许我的语法是错误的更新。
任何想法将不胜感激。
那我已经试过了,谢谢你。它产生这个错误: '对象{}没有方法'更新'' – Evenflow 2012-07-05 13:46:58
我假设'userModel'是你的Model类的用户,但是这一行让我感到困惑:'var userModel = new model();'你应该从'mongoose.model('user',userSchema)''调用返回的对象上调用'update';'注册模式的地方。 – JohnnyHK 2012-07-05 14:08:23
是的,这就是我所做的,'var userModel = new model();'只是一个返回模型和连接的包装器。你可能会看到,我正在调用Schema('userModel.userFind')的一个方法,并且工作得很好,所以我的包装返回模型和连接就好了。 – Evenflow 2012-07-05 14:46:03