node.js - 是否可以将额外的参数传递给 Mongoose 更新回调

我有 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/

相关文章:

mongodb - 如何使用 c# 在 mongodb 中增加一个字段

php - 为什么这种 mongo 排序在 PHP 中不起作用?

javascript - 如何在 mongodb-native findAndModify 中使用变

mongodb - 结合 Neo4J 和 MongoDB : Consistency

c# - 使用 MongoDB 的 C# 驱动程序进行多字段查询

php - mongodb:查找列的最高数值

node.js - 如何在 mongoose、Node.js 中通过 var 设置键?

node.js - 模型操作的 Sails.js 身份验证

mongodb - 与 skip() 和 limit() 一起使用的 Distinct() 命令

c# - MongoDB + C# 驱动程序 + 查询元素数组,其中每个数组元素包含要查询的子文档