发送响应并停止在nodejs中进一步执行代码

时间:2016-09-05 08:58:51

标签: node.js express

我正在使用node创建restful api并在发送响应时感到困惑。

以下是示例代码:

 router.post('/', function(req, res) {

   var mobileRegex=/^\d{10}$/;

   if (!mobileRegex.test(req.body.mobile)){
         res.json({status:'success',type:false,msg:'Invalid Mobile'});
      // I dont want  further execution of code after this but still it continues and prints data not defined  
      // OR
       return res.json({status:'success',type:false,msg:'Invalid Mobile'});
      //but works if I specify return before it
  }
  var data={...};
  signupModel.createUser(data,function(err,result){
     if(err)
      {
         res.json({status:'success',type:false,msg:'....'});
      }
      else
      {
        res.json({status:'success',type:false,id:'....'});
      }
});

当我在失败的移动验证响应期间没有指定返回时,它继续执行代码并且打印数据未定义'在控制台但无效的移动消息json正确发送到客户端而没有错误跟踪。

我很困惑在nodejs中创建api时要遵循的正确方法我的关注点是请求在发送响应后不应再被处理。 此外,如果返回结束,我应该在所有情况下向客户端发送json响应时使用return返回。

我见过Nodejs difference between 'res.json(..)' and 'return res.json(..)'线程,但它关注的是中间件,但在我的情况下没有

1 个答案:

答案 0 :(得分:0)

您可以在res.json()之后添加res.json()语句。 if (!mobileRegex.test(req.body.mobile)){ return res.json({status:'success', type:false, msg:'Invalid Mobile'}); } 只是设置响应。它不会发送回复。

rewrite