當使用這種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