我想知道为什么我的连接闪存不起作用。 我知道连接闪存尝试将消息保存到会话中。 所以我像这样声明会话:
app.use(session());
然后我设置闪光灯:
app.use(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"));
}
您不使用req.flash('flash_name')
来获取闪存消息。你要做的是req.flash()['flash_name']
.在您的情况下,res.render 选项对象中的消息值将为req.flash()['flash_var']
。req.flash()
不是单个 getter,它返回一个包含请求对象上所有闪烁的对象。使用req.flash()
的另一种方法是使用两个字符串输入,就像您使用req.flash('flash_var', 'ok')
一样。