Mam aplikację i expressjs i na określonej trasie wywołuję funkcję, która odpowiada użytkownikowi z bazy danych, wywołując res.json
z dokumentem bazy danych jako parametrem. Korzystam z bibliotek opartych na obietnicach i chciałem wstawić wywołanie zwrotne, w którym umieszczam dokument bazy danych w odpowiedzi. Ale program się nie powiedzie, kiedy to zrobię. Czy ktoś może wyjaśnić, dlaczego? Zastanawiam się także, dlaczego połączenia inlined do console.log
faktycznie działają. Czy istnieje pewna zasadnicza różnica między tymi dwoma metodami: res.json
i console.log
?Dlaczego nie mogę wywołać inline wywołania res.json?
Oto przykład tego, co działa, a co nie działa. Załóżmy, że getUserFromDatabase()
zwraca obietnicę dokumentu użytkownika.
//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);
}
Wygląda wiążący problem. http://alistapart.com/article/getoutbindingsituations – randunel