3 回答
TA貢獻1865條經驗 獲得超7個贊
你正在混合async/await和回調。那是行不通的,因為await不會等待回調完成。
如果你想用await語法大致如下(假設數據庫包支持promise)
try {
let outerresult = await db.query(outersql);
...
for (let row of outerresult) {
...
let innerresult = await db.query(innersql);
...
}
} catch (error) {
// Do the error handling
}
您也不能使用Array.forEachwith async/await,因為它不支持異步回調。
TA貢獻1827條經驗 獲得超9個贊
問題是它db.query是異步的,但由于您使用的是回調,因此它不太可能返回 Promises,因此 wait 不會執行您期望的操作。如果你想使用await,你可能需要適配這個API。
const query = sql => new Promise((resolve, reject) => {
db.query(sql, (error, result, fields) => {
if (error) {
return reject(error);
}
resolve(result);
});
});
const result = await query(`SELECT * FROM Pietanza`);
const menu = await Promise.all(result.map(temp => {
//retrieving indicatori (spicy, vegan for example)
const indicatori = await query(`
SELECT indicatore
FROM pietanza_indicatore
WHERE pietanza = '${temp.nome}'
`);
return {
...temp,
indicatori: indicatori.map(ind => ind.indicatore)
};
}));
res.json({ ...pietanze, menu });
添加回答
舉報
