我有一个像这样的小功能:
tierRouter.get(
'/:id',
passport.authenticate('basic', { session: false }),
function (req, res) {
Tier.findById(req.params.id, function (err, tier) {
if (err) { res.json(500, { error: "Internal server error" }); }
if (!tier) { return res.json(404, { error: "Not found" }); }
res.json(200, clean(tier));
});
}
);
它在我的数据库中查找对象并将其作为JSON返回给用户。如果出现问题,我会返回500
,如果一切顺利,我会返回200
和对象。但是当对象不存在时,我返回404
。唯一的区别是我必须在return
案例中的res.json
之前写404
,否则节点将继续res.json(200, clean(tier));
。
我只是不明白为什么我要添加return
语句。有人可以解释一下,还是让我朝着正确的方向前进?
答案 0 :(得分:3)
您需要提前return
或执行大量if/else
语句。另外,如果您在请求中不止一次res.render()
或res.json()
,那么您将收到headers already sent
错误并导致所有内容崩溃