我正在使用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(..)'线程,但它关注的是中间件,但在我的情况下没有
答案 0 :(得分:0)
您可以在res.json()
之后添加res.json()
语句。 if (!mobileRegex.test(req.body.mobile)){
return res.json({status:'success', type:false, msg:'Invalid Mobile'});
}
只是设置响应。它不会发送回复。
rewrite