感谢您的帮助......如何妥善处理这个问题。我现在处于异步状态,放弃了正确编写回调的能力。我有一个片段,我传递一组随机数(每个记录)并将它们传递给一个猫鼬呼叫。尝试从我传递的多个查询中创建数据集。
我的问题是,无论我4小时做了什么,“newarray”变量总是空的。
感谢您的帮助 -
async.forEach(arLimit, function(eachrecord, callback){
newarray = new Array;
var query = UGC_DB_Model.find({}).skip(eachrecord).limit(-1);
query.execFind(function (err, data) {
if (err)
console.log(err);
else {
newarray.push(data);
}
});
callback(null, newarray);
}, function(err, result) {
if (err) return next(err);
console.log("(it's empty): " + result);
});
答案 0 :(得分:2)
您的代码存在以下问题:
async.forEach
并非意图“生成”结果,这就是async.map
的用途; execFind
完成后调用回调,而不是在调用后立即调用; newarray
可能没有必要; 所以试试这个:
async.map(arLimit, function(eachrecord, callback){
var query = UGC_DB_Model.find({}).skip(eachrecord).limit(-1);
query.execFind(function (err, data) {
if (err)
callback(err); // pass error along
else {
callback(null, [ data ]);
// although I think you mean this (because 'data' is probably an array already)
// callback(null, data);
}
});
}, function(err, result) {
if (err) return next(err);
console.log("(it's empty): " + result);
});