Mongoose findOne没有完成回调功能

时间:2014-05-21 17:23:43

标签: javascript callback mongoose

好的我有一个JS方法,它使用Lodash和mongoose在Mongoose集合中查找文档。这看起来很好,但它似乎没有完成回调函数,然后转到下一个要查找的文档。以下是我的功能:

importParts: function(participants, event_id, done){
    _.forEach(participants, function (participant) {
    var race = {event_id: event_id, chip_number_64: participant.chip_number_64};
        Runner.findOne({contact_id: participant.contact_id}, function (err, doc) {
            if (err) {
                logger.error('CANNOT FIND AND UPDATE RUNNER BECAUSE OF: ', err);
                done(err);
            }
            logger.info("IN FINDONE");
            if (doc === null) {
                logger.info("IN FINDONE1");
                participant.races = [race];
                Runner.create(participant, function (err, row, rowsAffected) {
                    if (err) {
                        logger.error('FAILED TO IMPORT PARTICIPANT: ', doc);
                        logger.error(err);
                        done(err);
                    }
                    logger.info("IN FINDONE2");
                });
             }
          });
       };
    done(null);
}  

由于某种原因,上面的代码不支持回调函数,并且似乎异步返回到调用此函数的main方法。它好像回调没有得到尊重,直到经过一段时间或异步发生的事情不应该,因为我把所有东西包裹在回调中。所以我只是想找出为什么在执行查询时回调没有完成?此外,即使没有上述代码中包含的forEach迭代,这仍然会发生。

0 个答案:

没有答案