好的我有一个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
迭代,这仍然会发生。