我想返回一个对象数组,其中包含集合名称及其每个对象的文档计数,例如 [{col:col1,count:1},{col:col2,count:2}]
目前,我仅通过将查询解析为一个承诺,才为每个集合返回一个文档计数数组。
我的主要问题是从.map函数返回一个对象,因为它必须返回promises。
db.listCollections()
.toArray()
.then(collections => {
let promises = collections.map(col => {
// Cannot return {col,count} here :/
return db.collection(col["name"]).countDocuments();
});
return Promise.all(promises);
})
.then(res => console.log(res));
答案 0 :(得分:1)
或者,将async
函数传递给collections.map()
,您可以返回{ col, count }
:
db.listCollections()
.toArray()
.then(collections => {
const promises = collections.map(async col => {
return {
col: col.name,
count: await db.collection(col.name).countDocuments()
};
});
return Promise.all(promises);
})
.then(res => { console.log(res); });
答案 1 :(得分:0)
修复
return Promise.all([
db.collection(col["name"]).countDocuments(),
Promise.resolve(col["name"])
]);