6

私はマングースの更新呼び出しがあり、追加のパラメーターを渡したいです...次のように:

isLoopOverを渡そうとしています

UserInfo.update({_id: userInfo._id}, {'value': someval}, function(err, numAffected, isLoopOver ) {
    console.log('IsLoopOver ' + JSON.stringify(isLoopOver) );
    if (isLoopOver){
        doSomething(isLoopOver);
    }
});

上記を試してみましたが、以下のように(コールバック内で)オブジェクトを取得します:

{"updatedExisting":true,"n":1,"connectionId":117,"err":null,"ok":1}

mongo からのステータスを表示している理由がわかりません。

質問: コールバックを介して追加のパラメーターを渡すにはどうすればよいですか?

4

2 に答える 2

9

一般的な方法は次のとおりです。

var isLoopOver = false;
UserInfo.update({_id: userInfo._id}, {'value': someval}, function(err, numAffected) {
    console.log('IsLoopOver ' + JSON.stringify(isLoopOver) );
    if (isLoopOver){
        doSomething(isLoopOver);
    }
});

isLoopOverのコールバック関数が呼び出される前に、一部のコードが の値を変更することが心配な場合はupdate、次のコードを使用します。

(function (isLoopOver) {
  UserInfo.update({_id: userInfo._id}, {'value': someval}, function(err, numAffected) {
      console.log('IsLoopOver ' + JSON.stringify(isLoopOver) );
      if (isLoopOver){
          doSomething(isLoopOver);
      }
  });
}(isLoopOver));

isLoopOver変数がmongoからのステータスを表示している理由は、コールバック関数でisLoopOverは、が実際のパラメーターではなく仮パラメーターであるためです。

于 2013-06-02T04:44:53.127 に答える
6

Underscore の部分関数を使用できます。

UserInfo.update(..., _.partial(function( isLoopOver, err, numAffected ) {
}, isLoopOver ))
于 2013-06-02T01:46:21.180 に答える