У меня есть app.get
в моем node.js
Экспресс-сервер.Почему я получаю пустой объект, когда функция вызывается в 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
действительно уволен.
Как я могу решить эту проблему?
Вы не сможете с пользой 'return' данные' rows' поскольку 'connection.query()' является асинхронным. Подробнее см. Http://stackoverflow.com/q/14220321. В примере, который он использует, Ajax с jQuery, но проблема и многие из решений могут быть применены к любой асинхронной задаче. –