0

我想知道为什么我的连接闪存不工作。我知道 connect-flash 尝试将消息保存到会话中。所以我这样声明会话:

app.use(session());

然后我设置了 flash :

app.use(flash());

问题是,当我使用 connect-flash 时,它在重定向操作后并没有显示刚刚设置的消息。

req.flash('flash_var', 'ok');
res.redirect('/mail/send');

我在“/mail/send”路由器上看不到任何消息。

app.get('/mail/send', function(req, res) {
  res.render('mail/console', {
    console.log("flash : "+req.flash('flash_var'); // null
    message: req.flash('flash_var')
  });
});

控制台消息正在打印空值,上一步似乎没有正常发送值。当然,我在 ejs 页面上没有看到任何“flash_var”。

我的代码有什么问题?

if(req.flash("flash_var") != ""){
  flash_var = req.flash("flash_var");
  console.dir("flash_var dir : "+req.flash("flash_var"));
}
4

1 回答 1

0

你不用req.flash('flash_name')来得到一个闪光的消息。你会做的是req.flash()['flash_name']。在您的情况下, res.render 选项对象中的消息值将是req.flash()['flash_var']. req.flash()不是一个单独的 getter,它返回一个包含请求对象上所有 flash 的对象。另一种使用方法req.flash()是使用两个字符串输入,就像您使用req.flash('flash_var', 'ok').

于 2018-03-13T02:44:46.753 回答