2016-04-02 179 views
0

设置响应,当我使用的承诺不确定的。我的代码看起来是这样的:快速响应的承诺

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"); 
} 

当我运行getUserByUsername方法,我得到TypeError: Cannot read property 'json' of undefined。 我无法理解为什么响应是undefineddefaultJsonResponse(njson, res)

+0

你必须通过一个回调'then',你的函数调用的不是结果。用函数表达式来包装它们。 – Bergi

+0

为什么你有函数defaultJsonResponse定义两次?在if/else语句之后,您还缺少括号。 – user2263572

+0

@ user2263572,那里不需要括号。你确定你收到回应吗?如果是的话,你能提供JSON吗? – Filipe

回答

0

答案是@Bergi在上面的评论中说的,这是我对JavaScript函数重载的理解不够。通过给方法2个不同的名字解决了问题。