node.js - 在 foreach 循环中返回带有异步查询的文档
问题描述
我正在遍历一个对象以查找 id 编号,然后从 mongodb 查找并返回相关文档。
我可以在 forEach 函数中控制文档,但我无法返回它们,我很难理解为什么。这是我的功能......
let myFunction = projects.people.forEach(async function (person) {
const outputs = await Output.find({ person: person._id })
console.log(outputs) // this works
return outputs
})
console.log(myFunction) // this does not work
我不确定我做错了什么,如果这是因为它是异步的,还是因为它是一个 forEach(我用 for/of 尝试过,但也无法让它在函数之外返回)。退回这些文件的最佳方式是什么?
解决方案
您可以使用.map()
创建一个 id 数组,然后使用$in运算符在一个查询中找到所有这些。就像是:
let myFunction = await Output.find({
person: {
$in: projects.people.map(person => person._id)
}
});
console.log(myFunction)
推荐阅读
- linux - 使用 powershell 的最简单的 XML-RPC 查询示例?
- google-analytics - 在 Google Analytics(分析)“站点内容”下也看到我的 UTM 代码活动是否正常?
- angular - Angular 在所有路由上保留 queryParam
- wordpress - 将术语与 Wordpress 中帖子 ID 的元键相关联
- python - 使用 Zappa 和 Windows 10 时无法从“flask”导入名称“Flask”
- javascript - 如何一次过滤多个对象属性?
- pandas - 根据列名压缩宽数据
- spring-boot - 为什么 un-jar then jar 会再次破坏我的 Spring Boot Web 应用程序?
- reactjs - 使用 fieldset 响应禁用组件
- python - 如何将 cProfile Stats.print_stats() 输出重定向到日志记录?