2016-04-02 11 views
0

私は約束を使用して応答を設定します。私はTypeError: Cannot read property 'json' of undefinedを得るgetUserByUsername方法を実行すると約束事で未定義の返答

app.get("/api/assignment/user", getUserByUsername); 

function getUserByUsername (req, res) { 
    var username = req.query.username; 
    model.findUserByUsername(username) 
     .then(defaultJsonResponse(res), notFound(res)); 
} 

function defaultJsonResponse(res) { 
    return function(nObj) { defaultJsonResponse(nObj, res)}; 
} 

function defaultJsonResponse(njson, res) { 
    if(njson) res.json(njson); 
    else notFound(res, "error"); 
} 

:私のコードは次のようになります。応答が@Bergiは、JavaScriptの関数のオーバーロードについての理解の私の欠如である上記のコメントで言ったように答えはあるundefined

+0

関数呼び出しの結果ではなく、 'then'にコールバックを渡す必要があります。それらを関数式で囲みます。 – Bergi

+0

なぜdefaultJsonResponse関数が2回定義されていますか? if/elseステートメントの後に角括弧もありません。 – user2263572

+0

@ user2263572、そこに角括弧は必要ありません。あなたは本当に返事をしていますか?はいの場合は、JSONを提供できますか? – Filipe

答えて

0

defaultJsonResponse(njson, res)である理由 私は悩みの理解を持っています。問題は2つの異なる名前のメソッドを与えるだけで解決しました。