我有mongoose更新调用,并希望传递一个额外的参数......就像这样:
尝试传递 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的状态。
问题:如何通过回调传递额外的参数?
答案 0 :(得分:8)
常见的方法是:
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
是形式参数而不是实际参数。
答案 1 :(得分:5)
您可以使用下划线的partial function:
UserInfo.update(..., _.partial(function( isLoopOver, err, numAffected ) {
}, isLoopOver ))