【发布时间】:2014-03-10 19:58:17
【问题描述】:
这就是我想要的:我有一个名为 results 的大数组。我想将该数组中的每个项目放入我的迭代函数中并将其保存到我的 mongoDB 中(我在这里也省略了一些不重要的步骤)。在将这些项目中的每一项都保存到数据库(或拒绝)之后,我希望 console.log 显示“全部完成”。不幸的是,在调用系列后几乎立即显示所有完成,而其他一切仍在处理中。我该怎么做?
我将猫鼬与一个名为“light”的模型一起使用,为了便于阅读,我省略了代码中的所有错误消息。我对 eachSeries 部分使用节点异步
var async = require('async');
var results = [very big array]
var iteration = function(row,callbackDone) {
light.find({data: row.data}, function (err,entry) {
if(entry.length) {
callbackDone();
return console.log(entry + ' already exists');
}
var newEntry = new light(row);
newEntry.save(function (err,doc) {
console.log(entry + ' saved');
callbackDone();
});
});
};
async.eachSeries(results,iteration, function (err) {
console.log('All done');
});
【问题讨论】:
-
尝试添加一些错误记录器 (
if (err) console.log(err);)。 -
为了便于阅读,我删除了错误记录器。对不起,如果我不清楚。该数组很容易有 100 多个条目,猫鼬操作完美无缺,但所有保存都发生在 console.log('all done') 显示之后。我需要的是一种在我的数组中的所有项目都已处理完之后显示“全部完成”的方法
标签: javascript node.js mongodb asynchronous