【发布时间】:2018-06-14 03:24:44
【问题描述】:
我刚刚开始使用 NodeJs 并处理异步函数。 我试图从一个 for 循环中执行多个 MongoDB 调用,我需要等待所有这些调用都完成,然后才能进行下一步。
我尝试使用异步来实现它,但似乎我在调用之外的所有变量都无法访问。知道如何使它工作吗?
var sample = req.body; // sample will be an array list of items
var stringList = "";
var calls = [];
for(var i = 0; i < sample.length; i++) {
console.log(sample[].item) // i can print it here
calls.push(function(callback) {
db3.table.find({column1:sample[i].item}, function(err, temp){ // i hit an error here, it cannot find sample[i].item...
if (err)
return callback(err);
stringList = stringList + temp[0].item2;
callback(null, stringList );
});
});
}
async.parallel(calls, function(err, result) {
if (err)
return console.log(err);
console.log(result); // I am expecting a string of all the item2 returned and concatenated previously
});
【问题讨论】:
-
在循环中调用 DB (any) 不是一个好主意。大多数数据库都支持批量操作(插入、更新),您可以通过一个调用来完成。你能解释一下你对循环中的数据库有什么要求吗?
-
这主要是因为我不确定如何使用 nodejs 和 MongoDB 进行复杂查询......我想要的是将其 column1 = 的几个项目的结果连接到我的几个值从请求体传入
-
发布示例数据并详细说明您想要的任何内容