私はアプリケーションを持っており、特定のルート上では、データベース文書をパラメータとしてres.json
を呼び出して、データベースからユーザーが応答する関数を呼び出します。私は約束しているライブラリを使用して、私は応答のデータベース文書を置いているコールバックをインライン化したいと思いました。しかし、プログラムは失敗すると失敗します。なぜ誰かが説明できますか?また、console.log
へのインラインコールが実際に動作するのはなぜかと思います。 2つの方法の間にいくつかの基本的な違いがありますかres.json
とconsole.log
?なぜ私はres.jsonを呼び出すことができませんか?
ここでは、動作するものと動作しないものの例を示します。 getUserFromDatabase()
がユーザー文書の約束を返すとします。 .then
がres
親オブジェクトへの参照せずにそれを直接呼び出すので、それをバインドしようとしているので
//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