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() - 异步/等待 [重复]的主要内容,如果未能解决你的问题,请参考以下文章