是否有可能传递一个额外的参数到mongoose更新callback

我有mongoose更新调用,并想传递额外的参数…像这样:

试图通过isLoopOver

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

试过以上,但我得到一个对象(在callback内)如下:

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

不知道为什么它显示从mongo状态。

问题:如何通过callback传递额外的参数?

常用的方法是:

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

如果您担心某些代码会在调用update的callback函数之前更改isLoopOver的值,请使用以下代码:

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

你的isLoopOvervariables显示mongo状态的原因是在callback函数中, isLoopOver是一个forms参数,而不是实际的参数。

你可以使用Underscore的部分function :

 UserInfo.update(..., _.partial(function( isLoopOver, err, numAffected ) { }, isLoopOver ))