我想从多个集合中获取最新对象,然后将所有对象保存到一个数组中,集合名称为键,最新对象为值。
我怎样才能顺序地或异步地做到这一点?
let dat = ["test", "test2"];
let merged = [];
dat.map((collName) => {
const promise = new Promise((resolve, reject) => {
db.collection(collName).find().sort({ timestamp: -1 }).limit(1).forEach((d) => {
resolve(d);
});
})
.then((result) => {
merged.push(result);
});
console.log(merged);
最后的日志给了我一个空数组。
最佳答案
您可以尝试使用async / await作为:
let dat = ["test", "test2"];
const promises = dat.map(async (collName) => {
try {
const data = await db.collection(collName)
.find({})
.sort({ timestamp: -1 })
.limit(1)
.toArray();
return data[0];
} catch(err) {
console.error(err);
}
});
(async () => {
const merged = await Promise.all(promises);
console.log(merged);
})();
关于javascript - Javascript-从mongodb的多个集合中收集数据,然后合并到数组中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53709917/