簡體   English   中英

為什么 mongoose 查找方法不是異步的?

[英]Why is mongoose find method not async?

帶有承諾的舊代碼

我有一些使用 mongoose 的舊代碼。 它從數據庫中獲取一些信息。 AccountViewPermission是一個模式。 都好。 我使用.then訪問它,這使它的行為類似於 Promise。

AccountViewPermission.find({ requested_by: request.body.credentials.character.id})
.then( permissions => {
  response.status(200).json(permissions)
})

文檔提及等待功能

根據文檔,我也應該能夠使用 asyn/await:

ZCCADDEDB567ABAE643E15DCF0974E503Z 查詢不是承諾。 他們有 a.then() function 用於 co 和 async/await 作為方便。 但是,與 promise 不同,調用查詢的.then() 可以多次執行查詢。

但是使用 await 會引發錯誤

所以我開始用await而不是(想要的)promise 來編寫這段代碼。

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 這是真的,但文檔說 mongoose 應該仍然可以使用await

在這種情況下如何使用 await 語法?

如官方文檔中所述"The await operator is used to wait for a Promise. It can only be used inside an async function." 文檔: 等待操作員

Mongoose 不能改變 javascript 處理 async / await 關鍵字的方式。 如果您需要后續信息,請查看文檔。

要使您的代碼正常工作,您必須將其包裝在異步 function 中。 沒有辦法解決這個問題。

 async function doSomething() { const permissions = await AccountViewPermission.find({ requested_by: request.body.credentials.character.id }) response.status(200).json(permissions) }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM