在async.waterfall方法中构造mongoose回调。

时间:2014-09-28 03:50:35

标签: javascript node.js mongodb asynchronous

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

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

我知道我需要构造代码,以便只有当mongoose完成查询数据库时才会调用callback,但是我不知道如何执行此操作并且已经阅读了所有相关帖子,但仍然可以我不知道了。

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

1 个答案:

答案 0 :(得分:1)

好吧,你应该在mongoose回调中做到这一点:

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