asynchronousnode.js数据stream混淆

感谢您的帮助…如何正确处理这个问题,挣扎大时间。 我现在在asynchronous,已经放弃了我的能力,妥善编写callback。 我有一个片段,在这里我传递一组随机数(eachrecord),并将它们传递给一个mongoose调用。 试图从我通过的多个查询中创build一个数据集。

我的问题是,不pipe我做了4个小时,“newarray”variables总是空的。

感谢您的帮助 –

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); }); 

你的代码有几个问题:

  • async.forEach并不意味着“生成”结果,这就是async.map目的;
  • 只有在execFind完成后才需要调用callbackexecFind ,而不是在调用完成后立即调用callbackexecFind
  • 你的新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); });