1

私はMongooseゲッターとセッターを使用しています。最近、セッターは新しいドキュメントを作成するときにのみ適用されることがわかりました(UserSchema.create ...)が、セッターは更新のために呼び出されません(UserSchema.findByIdAndUpdate ...)。私は正しいですか、何か不足していますか。私が正しければ、更新用のセッターはありますか?

( http://mongoosejs.com/docs/2.7.x/docs/getters-setter.html

ありがとう。

更新しました

gitの問題を見つけました: https://github.com/LearnBoost/mongoose/issues/751、これは予想される動作であることを意味します。私が正しいかどうかはわかりません。

4

2 に答える 2

1

findByIdAndUpdate を使用するべきではないことがわかりました。代わりに、オブジェクトを照会し、編集して保存する必要があります。

于 2013-09-20T18:02:07.397 に答える
0

https://groups.google.com/forum/?fromgroups=#!topic/mongoose-orm/8AV6aoJzdiQからそれをカプセル化する素晴らしい方法を見つけました:

function findByIdAndSave( model, id, data, next ){

  model.findById( id, function( err, doc ) {
    if( err ){
      next( err, null );
    } else {
      if(! doc ){
        next( new Error("Object to save not found"), null );
      } else {
        // There must be a better way of doing this
        for( var k in data ){
          doc[k] = data[k];
        }
        doc.save( next );
      }
    }
  });
}

(これは実際にはコメントとして属しますが、回答によりコードの書式設定が改善されます)

于 2015-01-28T04:47:26.633 に答える