0

これを使用する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()どちらの場合もエラーが発生します。たぶん私の構文はアップデートに対して間違っています。

どんなアイデアでも大歓迎です。

4

2 に答える 2

0

したがって、これが問題と解決策です。

Schema.methodsを定義するときは、それらを使用するためにモデルのインスタンスを作成する必要があります。

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

モデル独自のメソッド(Model.updateなど)にアクセスできなくなったため、問題が発生します。

この場合、メソッドは静的として定義する必要があるため、インスタンスは不要であり、すべて正常に機能します。

myModel.mySchemaStatic();
于 2012-07-05T14:58:39.000 に答える
0

これを使用するupdateには:

userModel.update(
  { 'username': user, 'password': pass },
  { $inc: { logins: 1 }, $set: { last_action: new Date() }},
  function(err, numAffected) {
    ...
});
于 2012-07-05T13:15:44.160 に答える