我有 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 的状态。
问题:如何通过回调传递额外的参数?
最佳答案
常见的方式是:
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
是形参而不是实参。
https://stackoverflow.com/questions/16878155/