Ich habe und expressjs Anwendung und auf einer bestimmten Route rufe ich eine Funktion, die mit einem Benutzer aus der Datenbank durch den Aufruf res.json
mit dem Datenbankdokument als Parameter reagiert. Ich verwende Versprechen basierte Bibliotheken und ich wollte den Callback inline, wo ich das Datenbankdokument in die Antwort einfügen. Aber das Programm schlägt fehl, wenn ich das tue. Kann jemand erklären warum? Ich frage mich auch, warum inlined Anrufe zu console.log
tatsächlich funktionieren. Gibt es einen grundlegenden Unterschied zwischen den beiden Methoden res.json
und console.log
?Warum kann ich nicht direkt zu res.json anrufen?
Hier ist ein Beispiel dafür, was funktioniert und was nicht funktioniert. Angenommen, getUserFromDatabase()
gibt ein Versprechen eines Benutzerdokuments zurück.
//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);
}
Es sieht aus wie eine Bindung Problem. http://alistapart.com/article/getoutbindingsituations – randunel