У меня есть приложение expressjs и по определенному маршруту я вызываю функцию, которая отвечает с пользователем из базы данных, вызывая res.json
с документом базы данных в качестве параметра. Я использую обетованные библиотеки, и я хотел бы включить обратный вызов, когда я помещаю документ базы данных в ответ. Но программа не работает, когда я это делаю. Может кто-нибудь объяснить, почему? Я также удивляюсь, почему на самом деле работают встроенные вызовы console.log
. Существует ли принципиальное различие между двумя методами res.json
и console.log
?
Вот пример того, что работает и что не работает. Предположим, что getUserFromDatabase()
возвращает обещание пользовательского документа.
//This works
var getUser = function(req, res) {
getUserFromDatabase().then(function(doc) {
res.json(doc);
});
}
//This does not work (the server never responds to the request)
var getUserInline = function(req, res) {
getUserFromDatabase().then(res.json);
}
//This works (the object is printed to the console)
var printUser = function(req, res) {
getUserFromDatabase().then(console.log);
}