Express.js:是否有可能像res.render一样将对象传递给redirect?
编辑: 在这个答案中提出的解决scheme是实现这一目标的正确方法:
在节点上的get
请求我可以这样做:
app.get('/', function(req, res) { res.render('index.ejs', { message: 'test' }); });
并发送一个对象,以便随请求一起设置消息。 我怎样才能做到这一点redirect:
即这样的事情:
function testSend(req, res) { mess = {message: 'test two'}; res.redirect('/', mess); //Won't pass to the "get" }
另一个解决scheme是使用快速会话 :
初始化您的应用程序时:
var session = require('express-session'); app.use(session({secret: 'mySecret', resave: false, saveUninitialized: false})); //configure the options however you need them, obviously
您的redirectfunction:
function testSend(req, res) { req.session.message = 'please login first'; //or whatever res.redirect('/'); });
并在你的路由器:
app.get('/', function(req, res) { var message = req.session.message; res.render('index.ejs', {message: message}); });
这将使您的邮件安全地保存在服务器端,以防包含敏感数据。
你可以使用像@Jeremy这样的会话,或者像URL上的参数那样传递数据
res.redirect('/my-url/?param1=value1¶m2=value2')
在控制器上
req.query.param1 req.query.param2