为什么ExpressJS需要显式返回

时间:2014-05-29 09:59:41

标签: node.js express

我有一个像这样的小功能:

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语句。有人可以解释一下,还是让我朝着正确的方向前进?

1 个答案:

答案 0 :(得分:3)

您需要提前return或执行大量if/else语句。另外,如果您在请求中不止一次res.render()res.json(),那么您将收到headers already sent错误并导致所有内容崩溃