我在node.js
Express服務器中有這個app.get
。爲什麼在node.js中調用函數時會得到一個空對象?
app.get('/api/court/:num', function(req, res, next) {
var courts = new CourtsHandler;
if (req.params.num == 0) //get array of all courts
return res.send(200, courts.courtsAmount());
});
這是調用這個函數:
this.courtsAmount = function(){
connection.query('SELECT COUNT(*) AS result from courts', function(err, rows, fields){
if (err) throw err;
connection.end();
console.log(rows[0].result);
return rows[0].result;
});
};
的courtsAmount函數獲取調用。但在我的客戶看來,我沒有得到回報。相反,我只是得到一個空的對象。
我認爲這與我的.query
有一個回調這一事實有關,因此res.send
在courtsAmount
實際上被觸發之前發送了一個空對象。
我該如何解決這個問題?
您將無法有效地從''rows' return'數據因爲'connection.query()'是異步的。欲瞭解更多信息,結帳http://stackoverflow.com/q/14220321。它使用的示例是使用jQuery的Ajax,但該問題和許多解決方案可以應用於任何異步任務。 –