猫鼬中的Model.findById()-异步/等待

时间:2020-07-15 16:50:46

标签: javascript mongodb mongoose promise async-await

docs说函数findById()返回查询。

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

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

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

2 个答案:

答案 0 :(得分:0)

在猫鼬documentation中,我们有:

猫鼬异步操作(如.save()和查询)返回thenable。这意味着您可以执行MyModel.findOne({})。then()之类的操作,并在使用async / await时等待MyModel.findOne({})。exec()。

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

实际上,如doc所说,Model.findById()调用Model.findOne:

此功能触发以下中间件。

  • findOne()

答案 1 :(得分:0)

所以我找到了答案。

findById()返回查询。

查询类型具有称为exec()的功能。那是实际上返回承诺的函数。

这就是为什么我们可以使用async / await。