Express.js:是否可以将对象传递给重定向,就像使用res.render一样?

时间:2014-11-04 23:03:53

标签: node.js express

编辑:建议的解决方案in this answer是实现这一目标的正确方法:

在节点中的get请求中,我可以这样做:

app.get('/', function(req, res) {
    res.render('index.ejs', {
        message: 'test'
    });
});

发送一个对象以便与请求一起设置消息。如何通过重定向执行相同的操作:

即。像这样的东西:

function testSend(req, res) {

    mess = {message: 'test two'};
    res.redirect('/', mess);
    //Won't pass to the "get"
}

2 个答案:

答案 0 :(得分:1)

另一种解决方案是使用express sessions

初始化应用时:

var session = require('express-session');
app.use(session({secret: 'mySecret', resave: false, saveUninitialized: false}));
//configure the options however you need them, obviously

您的重定向功能:

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

这样可以将邮件安全地保存在服务器端,以防它包含敏感数据。

答案 1 :(得分:0)

您可以使用@Jeremy之类的会话,或者传递URL上的params等数据

res.redirect('/my-url/?param1=value1&param2=value2')
控制器上的

req.query.param1
req.query.param2