【问题标题】:Javascript get mongoose data inside an Async Array.prototype.map()Javascript 在 Async Array.prototype.map() 中获取猫鼬数据
【发布时间】:2020-08-30 00:35:12
【问题描述】:

我正在处理我的 nodejs 项目,我刚刚注意到在异步 .map() 迭代中等待 mongoose 查询返回 null。

    const arr = [1, 2, 3, 4]
    const result = arr.map(async obj => {
        return {
            number: obj,
            user: await User.findOne({role: 'admin'})
        }
    })
    Promise.all(result).then(res => {
        console.log(result)
    })
    res.sendStatus(200)

日志:

[
  Promise { { number: 1, user: null } },
  Promise { { number: 2, user: null } },
  Promise { { number: 3, user: null } },
  Promise { { number: 4, user: null } }
]

如何正确地从异步 Array.prototype.map() 中的 mongoose 获取数据?

【问题讨论】:

    标签: javascript node.js mongodb mongoose async-await


    【解决方案1】:
    const arr = [1, 2, 3, 4]
    const result = arr.map(async obj => {
        return {
            number: obj,
            user: await User.findOne({role: 'admin'}).exec()
        }
    })
    Promise.all(result).then(res => {
        console.log(result)
    })
    res.sendStatus(200)
    

    注意 findOne 之后的 .exec()

    【讨论】:

    • 输出保持不变。
    【解决方案2】:

    我可能会补充一点,如果您使用角色管理员执行 findOne,mongo 可能会一直返回相同的文档。

    【讨论】:

    • 哦,是的,但这只是作为一个例子。
    猜你喜欢
    • 2020-03-10
    • 2022-12-19
    • 2016-07-30
    • 2016-01-21
    • 2016-12-12
    • 2013-08-14
    • 1970-01-01
    • 1970-01-01
    • 2016-11-12
    相关资源
    最近更新 更多