我正在學習Node.js的過程中,並堅持如何返回mysql查詢的結果作爲API響應。從我目前閱讀的內容來看,似乎我需要返回一個承諾並解決它,但我不確定如何返回數據。承諾:如何獲得迴應?
function get_free_count() {
return new Promise(function(resolve,reject) {
var sql = "SELECT COUNT(id) AS number FROM users";
conn.query(sql, function(err,result) {
if(err) return reject(err);
console.log(result[0].number);
resolve(result[0].number);
});
});
}
app.get('/users/free/count', function(req,res) {
var output;
output = get_free_count().then(res.json(output));
});
我陷入瞭解決和返回響應點。如果我在then()
函數中創建回調函數,我將無法訪問res對象,因爲它超出了範圍。到目前爲止,我一直無法找到如何返回數據庫值。有什麼方法可以將我的免費計數作爲API響應返回?
在此先感謝。
不換行'並承諾自己conn.query',有[ (https://www.npmjs.com/package/promise-mysql) – Kos
是的,你應該在'then'調用中創建一個回調函數,因爲'then'需要一個回調函數。不,res'不會超出範圍,因爲回調是*閉包*。嘗試一下! – Bergi