Node.js-返回res.status VS res.status

时间:2018-10-21 20:29:59

标签: node.js http express response

我很好奇返回响应和创建响应的区别。

我已经看到了同时使用return res.status(xxx).json(x)res.status(xxx).json(x)的大量代码示例。

有人能详细说明两者之间的区别吗?

2 个答案:

答案 0 :(得分:2)

如果您有条件并且想提早退出,则可以使用return,因为多次调用res.send()会引发错误。例如:

//...Fetch a post from db

if(!post){
  // Will return response and not run the rest of the code after next line
  return res.status(404).send({message: "Could not find post."})
}

//...Do some work (ie. update post)

// Return response
res.status(200).send({message: "Updated post successfuly"})

答案 1 :(得分:1)

就像@kasho 解释的那样,这仅是短路函数所必需的。但是,我不建议返回 send() 调用本身,而是在它之后返回。否则它会给出错误的表达式,即 send() 调用的返回值很重要,但事实并非如此,因为它只是 undefined

if (isAuthenticated) {
  res.status(200).send(user)
  return
}

res.sendStatus(401)