【问题标题】:Model.findById() in Mongoose - Async/await [duplicate]Mongoose 中的 Model.findById() - 异步/等待 [重复]
【发布时间】:2020-11-05 05:59:14
【问题描述】:

docs 表示函数 findById() 返回一个查询。

在该文档中,您可以看到我们可以通过这种方式使用 async/await 的示例:

await Adventure.findById(id, 'name length').exec();

我们怎么可能将 async/await 用于不返回承诺的函数?

【问题讨论】:

    标签: javascript mongodb mongoose promise async-await


    【解决方案1】:

    所以我找到了答案。

    findById() 返回一个查询。

    Query 类型有一个名为exec() 的函数。那就是实际返回 promise 的函数。

    这就是我们可以使用 async/await 的原因。

    【讨论】:

      【解决方案2】:

      来自猫鼬documentation 我们有:

      Mongoose 异步操作,如 .save() 和查询,返回 thenables。这意味着如果您使用 async/await,您可以执行 MyModel.findOne({}).then() 和 await MyModel.findOne({}).exec() 之类的操作。

      您可以在 api 文档中找到特定操作的返回类型您还可以阅读更多关于 Mongoose 中的 Promise 的信息。

      实际上 Model.findById() 调用 Model.findOne 就像 doc 所说:

      此函数触发以下中间件。

      • findOne()

      【讨论】:

        猜你喜欢
        • 2018-06-11
        • 2020-01-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-29
        • 2017-01-11
        • 2021-12-30
        • 1970-01-01
        相关资源
        最近更新 更多