Mongoose 中的 Model.findById() - 异步/等待 [重复]

Posted

技术标签:

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

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

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

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

我们怎么可能将 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()

【讨论】:

以上是关于Mongoose 中的 Model.findById() - 异步/等待 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Mongoose,无法打印数据库中的产品

NestJs/Mongoose 中的自动增量序列

Mongoose 中的子文档数组

Mongoose 中的人年龄虚拟财产

删除 mongoose 中的嵌入文档

Express App 中的 Mongoose 模型(未被要求找到)