在node.js中,是否有任何方法可以将一条数据从一条路由重定向到另一条路由?

时间:2018-07-03 20:20:57

标签: node.js express routes

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

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

  

我想知道的是,是否有可能将数据从第一条路由重定向到另一条路由到第二条路由?

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

// 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);
        }

        (...)

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

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

注意:如jfriend00的reponse所述,此解决方案干净无状态,数据可用于客户端或服务器。

另请参阅res.redirect()req.query

会话:以另一种方式,如果您想在服务器端存储数据,则可以使用Simple session middleware for Express包...