這可能是一個愚蠢的問題,但我無法找到答案。 我的數據庫查詢(節點 - > PostgreSQL的)不點火時,查詢功能本身是從另外一個回調像這樣調用回調:節點 - 數據庫查詢回調未觸發
routes.js
router.post("/getsheet/", (req, res) => {
googleAPI.getSheet(googleToken, req.body.sheetid).then((invoices) => {
templateData.sheetData = invoices;
templateData.sheetData.length = invoices.length;
// When sheet is received, db query runs but it's callback won't
// function takes an array and index
db.query(invoices, 1).then((db_results) => {
console.log(db_results);
res.redirect("/");
}).catch((db_error) => {
console.error(db_error)
res.redirect("/");
});
}).catch((error) => {
console.error(error);
});
});
db.js
const query = (data, index) => {
return new Promise((resolve, reject) => {
// console log fires but not the callback function so it does not resolve or reject
console.log("... querying index ... " + index + " customer: " + data[index].name);
client.query(`SELECT * FROM customer WHERE customer_number=${data[index].customer_id};`, (err, res) => {
// does not run this block
if (!err) {
resolve(res);
} else {
return reject(err);
}
});
});
}
謝謝! :)
你在'routes.js'代碼甚至不叫'你看後query'功能。缺了點什麼。一般來說,不是將'pg'庫轉換爲承諾,而是使用[pg-promise](https://github.com/vitaly-t/pg-promise);} –
這些片段是更大代碼和routes.js當然需要變量「db」中的db.js。客戶端連接和結束在查詢功能之前和之後。 對不起,我留下了這些問題。 – Mulperi