【问题标题】:Is there any way of redirecting from one route to another with data from first route to second in node.js?有没有办法从一个路由重定向到另一个路由,数据从 node.js 中的第一个路由到第二个路由?
【发布时间】:2018-07-03 20:20:56
【问题描述】:

我想知道的是,是否可以使用从第一条路线到第二条路线的数据从一条路线重定向到另一条路线?例如,从 HTML 表单中,我将数据(例如电话号码)发布到路线(例如“/route1”),并且在此路线上成功操作后,我想将电话号码从“route1”发送到“/route2”。如果可以的话,我该怎么做呢?

【问题讨论】:

    标签: node.js express routes


    【解决方案1】:

    有多种方法可以在重定向中传递数据。

    1. 将数据放入重定向 URL http://www.whatever.com/somePath?ph=123-456-1234 的查询参数中。呈现重定向页面时,服务器或客户端都可以访问数据。
    2. 将数据放入服务器端会话对象中,以便在呈现重定向页面时可用。
    3. 使用“flash”中间件,该中间件只为来自该特定浏览器的“下一个”请求保存一些数据,以便在呈现重定向页面时数据将在服务器端可用。

    在这些选项中,第一个是干净的,因为它是无状态的,并且数据可供客户端或服务器使用。它也不需要任何临时的服务器端存储。

    【讨论】:

      【解决方案2】:

      我想知道的是,是否可以使用从第一条路线到第二条路线的数据从一条路线重定向到另一条路线?

      一旦您的数据无误发布,您可以通过这种方式重定向客户端:

      // POST data
      app.post('/oneRoute', function(req, res) {
      
          let myData = new MySchema();
          myData.phoneNumber = req.body.phoneNumber;
      
          // save data to DB then redirect to /anotherRoute
          myData.save(function(err) {
      
              if (err) {
                  // error
              } else {
                  // redirect path
                  res.redirect('/anotherRoute');
              }
          });
      });
      

      然后,如果您想在重定向 URL 的查询参数中传递数据,您可以:

              (...)
      
              } else {
                  // redirect path + query parameter
                  res.redirect('/anotherRoute?phonenumber='+req.body.phoneNumber);
              }
      
              (...)
      

      下一步是什么?您可以从重定向路径的 url 中获取查询字符串...

              http://localhost:3000/anotherRoute/?phonenumber=6876766242425
      

      注意:正如 jfriend00 的reponse 所说,这个解决方案是干净且无状态的,数据可供客户端或服务器使用。

      另见res.redirect() & req.query

      Session:换一种方式,如果你想在服务器端存储数据,可以使用Simple session middleware for Express包...

      【讨论】:

        猜你喜欢
        • 2020-02-03
        • 2021-05-02
        • 1970-01-01
        • 1970-01-01
        • 2023-01-14
        • 2019-07-06
        • 2017-12-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多