我想要来自多个集合的数据,然后想要合并所有数据。我正在使用异步模块进行顺序执行。我写了像
这样的代码var newArray = new Array();
common.findAllById('list',{'boardId': parseInt(bId)},function(err,result){
if(err) console.log(err);
else{
if(result != null){
async.forEachSeries(result, function (res, callback){
common.findAllById('cards',{'listId':parseInt(res.listId)},function(err,temp){
if(err){ callback("errr"+err);}
else{
var arr = new Array();
async.forEachSeries(temp, function(tmp,callbackFn){
common.findAllById('checklist',{'cardId':parseInt(tmp.cardId)}, function(err,r){
if(err){
callbackFn("errr"+err);
}
else{
if(r !== null){
console.log("r:");
tmp.checklists = r;
arr.push(tmp);
callbackFn(err);
}
}
});
},function(err){
console.log('arr');
res.cards = arr;
console.log(res);
});
newArray.push(res);
callback(err);
}
});
}, function (err){
console.log('after:');
console.log(newArray);
return response.send(newArray);
});
}
}
});
在完成第一个foreach循环sholud的内部(第二个)foreach循环回调函数之后,在此代码中但是在第二个foreach循环的第一次迭代之后,第一个循环的回调被调用,然后它继续第二个foreach循环迭代。这段代码中的错误请帮助我。 提前谢谢你!
答案 0 :(得分:2)
你应该将第一个forEachSeries的callback()调用到内部forEachSeries的最终回调中。
},function(err){
console.log('arr');
res.cards = arr;
console.log(res);
newArray.push(res);
callback(err);
});