当前位置: 首页 > 知识库问答 >
问题:

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

万高洁
2023-03-14

我使用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:'....'});
      }
});

当我在失败的移动验证响应期间未指定return时,它会继续执行代码并在控制台中打印“数据未定义”,但Invalid mobile message json会正确发送到客户端,而不会进行错误跟踪。

我不知道在nodejs中创建api时应该遵循什么样的正确方法。我担心的是,一旦发送了响应,就不应该进一步处理请求。此外,如果return结束响应,我应该在所有情况下向客户端发送json响应时都使用return吗?

我已经看到Nodejs之间的区别res.json(…)和返回res.json(…)线程,但它与中间件有关,但在我的情况下没有

共有1个答案

长孙景焕
2023-03-14

您可以在< code>res.json()之后添加< code>return语句。< code>res.json()只是设置响应。它不发送响应。

if (!mobileRegex.test(req.body.mobile)){
     return res.json({status:'success', type:false, msg:'Invalid Mobile'});
}
 类似资料:
  • 问题内容: 在我的Django应用程序中,我想跟踪响应是否已成功发送到客户端。我很清楚,HTTP之类的无连接协议中没有“防水”方式来确保客户端已接收(并显示)响应,因此这不是关键任务功能,但是我仍然想在最近的可能时间。响应将不是HTML,因此无法从客户端进行任何回调(使用Javascript或IMG标签等)。 我可以找到的“最新”钩子是在中间件列表的第一个位置添加实现process_respons

  • 我是Storm新手。我在用它做一个大学项目。 我创建了我的拓扑,有一个连接到MySql数据库的喷口和两个螺栓。连接到喷口的第一螺栓准备和移除元组中不需要的信息;第二,对元组进行过滤。 我在本地模式下工作。 我希望我的问题很清楚。提前感谢!

  • 问题内容: 这是我要执行的一些代码。我想等待AJAX​​响应,以便可以从服务器返回一些信息。有什么办法可以做到这一点? 问题答案: 很高兴在这里读到。 这实际上不是“同步的”,但我认为它可以达到OP的预期。 旧的(自此之后,jQuery的选项已被弃用): 所有Ajax调用都可以异步(使用回调函数,这是在“成功”键之后指定的函数)或同步完成-有效地阻止并等待服务器应答。要获得同步执行,您必须指定 就

  • 问题内容: 如何使PHP 5.2(以apache mod_php运行)向客户端发送完整的HTTP响应,然后再继续执行操作一分钟? 长话说: 我有一个PHP脚本,该脚本必须执行一些较长的数据库请求并发送电子邮件,这需要45到60秒才能运行。这个脚本由我无法控制的应用程序调用。我需要该应用程序报告从PHP脚本收到的任何错误消息(主要是无效的参数错误)。 该应用程序的超时延迟小于45秒(我不知道确切的值

  • 我正在尝试解决一个关于将Apache和Tomcat与mod\u proxy\u ajp连接的问题。在我的例子中,Tomcat停止响应Apache,Apache日志打印错误消息,如下所示: 我不知道。有人能帮我吗?