var count = 0;
list.forEach(function(entry){
var coll = db.collection(entry);
coll.count(function(err,result){
count = count + result;
})
})
function(count){
//do something with count
}
我正在使用node.js上的mongoDB本机驱动程序,问题是在它完成之后应该使用count的函数将每个集合中的所有条目计入到早期,这很明显,因为它是asynch 。我已经搜索了一段时间的解决方案,但还没有找到任何东西。
答案 0 :(得分:1)
您可以使用承诺
Promise.all(
list.map(function(entry){
return new Promise(function(resolve, reject) {
db.collection(entry).count(function(err, result){
if (err) return reject(err);
resolve(result);
});
});
})
).then(count);
function count(result) {
var sum = result.reduce(function(a,b) { return a + b });
}