使用mongoskin,我可以执行以下查询,该查询将返回游标:
myCollection.find({}, function(err, resultCursor) { resultCursor.each(function(err, result) { } }
但是,我想为每个文档调用一些异步函数,并且仅在回调后再移动到光标的下一个项目(类似于async.js模块中的eachSeries结构)。例如:
myCollection.find({}, function(err, resultCursor) { resultCursor.each(function(err, result) { externalAsyncFunction(result, function(err) { //externalAsyncFunction completed - now want to move to next doc }); } }
我该怎么办?
谢谢
更新:
我不愿意使用它,toArray()因为这是一个大的批处理操作,并且结果可能无法一次性存储在内存中。
toArray()
如果您不想使用toArray将所有结果加载到内存中,则可以使用游标进行迭代,如下所示。
myCollection.find({}, function(err, resultCursor) { function processItem(err, item) { if(item === null) { return; // All done! } externalAsyncFunction(item, function(err) { resultCursor.nextObject(processItem); }); } resultCursor.nextObject(processItem); }