我有和expressjs應用程序,並在特定的路線上調用res.json
與數據庫文檔作爲參數與數據庫中的用戶響應的函數。我使用基於promise的庫,並且想要將回調中的數據庫文檔放在回調中。但是,當我這樣做時,程序就會失敗。有人可以解釋爲什麼嗎?我也想知道爲什麼內聯調用console.log
確實有效。兩種方法res.json
和console.log
之間有一些根本的區別嗎?爲什麼不能直接調用res.json?
下面是一個什麼工作,什麼不工作的例子。假設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);
}
它看起來像一個結合問題。 http://alistapart.com/article/getoutbindingsituations – randunel