如何使用node.js中的ES6原生承諾調用查詢?以下是代碼。在node.js中使用ES6承諾返回空響應
let arr= [];
conn.query('select * from table1', (err, b) => {
for (let i = 0; i < b.length; i++) {
console.log(b[i]["id"])
let promiseGetData = new Promise((resolve, reject) => {
conn.query('select * from table2 where id = ?', [b[i]["id"]], (err, ce) => {
if (err) {
const response = {
statusCode: 500,
body: JSON.stringify({
message: err
}),
}
reject(response);
} else {
if (ce.length != 0) {
resolve(ce);
}
}
});
});
promiseGetData .then((data) => {
b[i]['data'] = data;
arr.push(b[i])
}).catch((err) => {
console.log(err);
});
}
console.log(b)
})
我看到一個空的響應,當我做console.log(b)。我不知道我是否以正確的方式使用了承諾,我認爲對於第一次查詢,我也應該在承諾中執行。任何幫助都非常感謝
您是否考慮過ce.length == 0並且沒有錯誤的情況? –
@GrantPark是的,我已經檢查沒有錯誤,實際上我已經在第二個查詢之前放置了console.log,之後我可以看到一個日誌但沒有查詢數據,但是我仍然會再次檢查該情況。 length == 0 –
在這種情況下,還要在第二個查詢中放置一個console.log,看看是否運行。 –