Javascript 为什么mongoose find方法不是异步的?
带有承诺的旧代码 我有一些使用猫鼬的旧代码。它从数据库中获取一些信息Javascript 为什么mongoose find方法不是异步的?,javascript,node.js,mongoose,async-await,Javascript,Node.js,Mongoose,Async Await,带有承诺的旧代码 我有一些使用猫鼬的旧代码。它从数据库中获取一些信息AccountViewPermission是一个架构。一切都好。我使用访问它。然后,这使它表现得像一个承诺 AccountViewPermission.find({ requested_by: request.body.credentials.character.id}) .then( permissions => { response.status(200).json(permissions) }) 文档中提到等待
AccountViewPermission
是一个架构。一切都好。我使用访问它。然后,
这使它表现得像一个承诺
AccountViewPermission.find({ requested_by: request.body.credentials.character.id})
.then( permissions => {
response.status(200).json(permissions)
})
文档中提到等待功能
据我所知,我还应该能够使用asyn/WAIT:
猫鼬查询不是承诺。它们有一个用于co和async/await的.then()函数,以方便使用。但是,与承诺不同,调用查询的.then()可以多次执行查询
但是使用wait会抛出错误
因此,我开始写这段代码,用wait
而不是(想要的)承诺
但是现在node.js抛出了一个错误:SyntaxError:await仅在异步函数中有效
。这是真的,但是医生说猫鼬应该仍然可以使用wait
在这种情况下如何使用wait语法?如官方文档
中所述,“wait运算符用于等待承诺。它只能在异步函数中使用。”
文档:
Mongoose无法改变javascript处理异步/等待关键字的方式。如果您需要后续信息,请查看文档
要使代码正常工作,必须将其包装在异步函数中。这是没有办法的
异步函数doSomething(){
const permissions=await AccountViewPermission.find({
请求者:request.body.credentials.character.id
})
response.status(200).json(权限)
}正如官方文档中所述,“wait运算符用于等待承诺。它只能在异步函数中使用。”文档: Mongoose无法改变javascript处理异步/等待关键字的方式。如果您需要后续信息,请查看文档 要使代码正常工作,必须将其包装在异步函数中。这是没有办法的 异步函数doSomething(){ const permissions=await AccountViewPermission.find({ 请求者:request.body.credentials.character.id }) response.status(200).json(权限)
}您会在错误消息中得到答案。您必须将逻辑封装在异步函数中。检查我的答案。你会在错误信息中得到答案。您必须将逻辑封装在异步函数中。检查我的答案。我的错误理解是调用的
find
方法应该是async
。但是等待必须在异步标记的函数中。也许这个洞察对其他人来说也是一个骗局,因此有了这个评论。我的错误理解是被调用的find
方法应该是async
。但是等待必须在异步标记的函数中。也许这一洞见对其他人来说也是一个陷阱,因此这一评论。
const permissions = await AccountViewPermission.find({ requested_by: request.body.credentials.character.id})
response.status(200).json(permissions)