【发布时间】:2018-07-03 20:20:56
【问题描述】:
我想知道的是,是否可以使用从第一条路线到第二条路线的数据从一条路线重定向到另一条路线?例如,从 HTML 表单中,我将数据(例如电话号码)发布到路线(例如“/route1”),并且在此路线上成功操作后,我想将电话号码从“route1”发送到“/route2”。如果可以的话,我该怎么做呢?
【问题讨论】:
我想知道的是,是否可以使用从第一条路线到第二条路线的数据从一条路线重定向到另一条路线?例如,从 HTML 表单中,我将数据(例如电话号码)发布到路线(例如“/route1”),并且在此路线上成功操作后,我想将电话号码从“route1”发送到“/route2”。如果可以的话,我该怎么做呢?
【问题讨论】:
有多种方法可以在重定向中传递数据。
http://www.whatever.com/somePath?ph=123-456-1234 的查询参数中。呈现重定向页面时,服务器或客户端都可以访问数据。在这些选项中,第一个是干净的,因为它是无状态的,并且数据可供客户端或服务器使用。它也不需要任何临时的服务器端存储。
【讨论】:
我想知道的是,是否可以使用从第一条路线到第二条路线的数据从一条路线重定向到另一条路线?
一旦您的数据无误发布,您可以通过这种方式重定向客户端:
// 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 所说,这个解决方案是干净且无状态的,数据可供客户端或服务器使用。
Session:换一种方式,如果你想在服务器端存储数据,可以使用Simple session middleware for Express包...
【讨论】: