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&param2=value2') 

在控制器上

 req.query.param1 req.query.param2