javascript - 在 async.waterfall 方法中构建 mongoose 回调。

标签 javascript node.js mongodb asynchronous

我的异步 waterfall 中的第一个函数采用_id作为输入,并使用findOne()方法获取两个属性来自具有特定 _id 的文档。然后,我将回调中的这两个属性传递给 waterfall 中的下一个函数。这是非工作代码:

async.waterfall([
      function (callback) {
        Results.findOne({ _id:match_id }, function (result) {
          var match_date = result.match_date;
          var match_week = result.week;
          });
          callback(match_date, match_week);
      },
        function (match_date, match_week) {
        // ...
        // do something with the date and week ...

我发现问题是 callbackfindOne 方法仍在执行时被调用,因此变量未定义并且进程崩溃。

我知道我需要构建代码,以便仅当 mongoose 完成查询数据库时才调用 callback,但是我不确定如何执行此操作,并且已阅读此处的所有相关帖子但我仍然无法理解它。

任何帮助都会很棒,谢谢。

最佳答案

那么,你应该在 Mongoose 回调中执行此操作:

async.waterfall([
      function (callback) {
            Results.findOne({_id:match_id}, function(result) {
                  ...
                  callback(match_date, match_week);
            });
      },
      ...
]);

关于javascript - 在 async.waterfall 方法中构建 mongoose 回调。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26081431/

相关文章:

javascript - 如何在运行其他函数时等待函数中的特定结果

java - MongoDb upsert 异常无效的 BSON 字段

javascript - 正则表达式从标签的 href 中获取 YouTube id 并将其嵌入 iframe 的问题

javascript - jQuery submit() - 事件来覆盖表单操作

javascript - document.getElementById 似乎返回 null

c# - 在 InsertOneAsync() 之后立即替换 OneAsync() 并不总是有效,即使在记录日志时也是如此

javascript - MongoDB:确保只有一个文档可以将字段设置为 true

javascript - 如何在 AngularJS 中按键

javascript - 被 fork 的 child_process 可以成为父进程并也 fork 新进程吗?

node.js - 在 Heroku 上使用 TypeScript 和 React 应用程序托管 Express 时出现的问题