【发布时间】:2020-08-30 03:13:54
【问题描述】:
带有承诺的旧代码
我有一些使用猫鼬的旧代码。它从数据库中获取一些信息。 AccountViewPermission 是一个模式。都好。我正在使用.then 访问它,这使它的行为类似于 Promise。
AccountViewPermission.find({ requested_by: request.body.credentials.character.id})
.then( permissions => {
response.status(200).json(permissions)
})
文档提到等待功能
根据the documentation,我应该也可以使用asyn/await:
Mongoose 查询不是承诺。为了方便起见,它们有一个用于 co 和 async/await 的 .then() 函数。但是,与 promise 不同的是,调用查询的 .then() 可以多次执行查询。
但是使用 await 会引发错误
所以我开始用 await 而不是(想要的)承诺来编写这段代码。
const permissions = await AccountViewPermission.find({ requested_by: request.body.credentials.character.id})
response.status(200).json(permissions)
但是现在 node.js 给我一个错误:SyntaxError: await is only valid in async function。这是真的,但文档说猫鼬应该仍然能够使用await。
在这种情况下如何使用 await 语法?
【问题讨论】:
-
那么您在错误消息中得到了答案。您必须将逻辑包装在异步函数中。检查我的答案。
标签: javascript node.js mongoose async-await