我遇到async
Node.js模块的问题。在我的Node.js应用程序中,我正在尝试获取MongoDB请求返回的JSON对象数组:
var fruits = ["Peach", "Banana", "Strawberry"];
var finalTab = [];
fruits.forEach(function(fruit) {
db.collection('mycollection').distinct("column1", {"column2":{$regex :fruit}}, (function(err, result) {
finalTab[fruit] = result;
console.log(result); // -> display the desired content
db.close();
if (err) throw err;
}));
});
console.log(finalTab); // -> []
目前,我正处于这一点。
我正在尝试实施async.map
来迭代Fruits
集合。
https://caolan.github.io/async/docs.html#map
有人可以帮忙吗? :)
感谢您提前寻求帮助。
编辑:
由于我需要我的db.collection
函数返回的所有结果,我正在尝试将这些异步命令添加到队列中,执行它并获得回调函数。
答案 0 :(得分:2)
你可以试试这个:
async.map(fruits , function (fruit, callback) {
db.collection('mycollection').distinct("column1", {"column2":{$regex :fruit}}, (function(err, result) {
//here you are assigning value as array property
//finalTab[fruit] = result;
// but you need to push the value in array
finalTab.push(result);
console.log(result); // -> display the desired content
db.close();
if (err) throw err;
//callback once you have result
callback();
}));
}.bind(this), function () {
console.log(finalTab); // finally call
}, function (err, result) {
return Promise.reject(err);
});