在异步.waterfall方法中构造mongose回调

Structuring mongoose callbacks in an async.waterfall method.

本文关键字:mongose 回调 异步 waterfall 方法      更新时间:2023-09-26

我的async waterfall中的第一个函数以_id为输入,并使用findOne()方法从具有该特定_id的文档中获取两个属性。然后,我将callback中的这两个属性传递给瀑布中的下一个函数。这是非工作代码:

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 ...

我看到的问题是,在findOne方法仍在执行时调用了callback,因此变量未定义,进程崩溃。

我知道我需要构建代码,以便只有当mongoose完成数据库查询时才能调用callback,但我不确定如何做到这一点,并且已经阅读了这里的每一篇相关文章,仍然无法理解。

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

好吧,你应该在mongoose回调中完成:

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