我有一個 postgres 資料庫。它包含具有參考其他類似記錄的列的記錄。列格式為 JSON。所以我得到了一條記錄,它有指向其他記錄的鏈接。這樣的嵌套可以是 n 個數量。因此,我無法提前知道我需要多少請求。事實上,所有這些請求都必須通過異步方法進行,因為我使用“pg”庫。但是 res.send 是一個同步方法,它在回圈的第一次迭代完成之前在堆疊上執行。結果,我得到了不完整的資料。我明白問題是什么,但我不明白解決方案
const dbResult = await db.query("SELECT * FROM docs where id = 17");//17 is for example
const doc = dbResult.rows[0];
doc.linked.forEach(linked => {
linked.assignedDocs = [];
linked.links.forEach(async link => {
const dbRes = await db.query("SELECT name, img FROM docs WHERE id = $1", [link.refId])
link.assignedDocs.push({
id: link.refId,
name: dbRes.rows[0].name,
img: dbRes.rows[0].img,
})
})
});
res.send(doc);
uj5u.com熱心網友回復:
forEach 不等待 async/await,使用 for ... of with async 塊
for (const linked of doc.linked) {
// ...
const dbRes = await func();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/508485.html
標籤:javascript 节点.js PostgreSQL 表示 异步
上一篇:為什么Promise.race([Promise.resolve(1),2]).then(console.log)回傳1而不是2?