我正在尝试使用异步eachSeries,以便对每个类别的报表计数进行编码。类别和报告并存储在单独的集合中,然后我首先获取可用的类别并对它们执行计数搜索。
这是我的密码:
Category.find({},{_id:0, name: 1}, function (err, foundCategories) {
async.eachSeries(foundCategories,
function (item,callback) {
Report.count({category: item.name}, function (err,count) {
var name = item.name;
console.log(count);
return callback(null,{name: count});
});
}
,function (err, results) {
if (err)
response.send(err);
response.send(JSON.stringify(results));
});
});问题是我什么也没收到,console.log输出的是实际数字,我做错了什么?
发布于 2015-06-06 16:40:18
eachSeries的API不为最终的回调提供任何结果--只在失败的情况下提供错误。在成功的例子中,它只是一个纯粹的控制流"eachSeries已完成“的指示符,但没有提供从worker函数传递值的机制。mapSeries确实提供了所需的功能。
发布于 2015-06-07 15:44:42
与Peter的答案类似,async.waterfall为您提供了瀑布执行函数,同时将返回值传递给瀑布链中的下一个异步函数。
https://stackoverflow.com/questions/30684606
复制相似问题