使用重定向时我无法显示我的flash消息(尽管使用渲染时一切正常)
如果我使用此代码渲染视图,则消息显示正常
req.flash('success_msg', 'Successfully Registered');
res.locals.message = req.flash();
res.render('home');
但如果我想重定向(我在这个例子中做),那么消息不会显示
req.flash('success_msg', 'Successfully Registered');
res.locals.message = req.flash();
res.redirect('/');
index.js
// Global Vars
app.use(function(req, res, next) {
res.locals.success_msg = req.flash('success_msg');
res.locals.error_msg = req.flash('error_msg');
res.locals.error = req.flash('error');
next();
});
// Use Routes
app.use('/', routes);
app.use('/', users);
有关如何处理此问题的任何想法,如果我没有提供足够的信息,请告诉我这里要添加的内容
我注意到的是我可以在重定向之前注销消息
req.flash('success_msg', 'Successfully Registered');
var message = res.locals.message = req.flash();
console.log(message); // { success_msg: [ 'Successfully Registered' ] }
res.redirect('/');
但它从未在我看来显示
<% if (locals.message) { %>
<div class="alert alert-success alert-dismissible fade show text-center" role="alert">
<strong><%= message.success_msg %></strong>
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<% } %>
由于
答案 0 :(得分:1)
我很确定问题出在全局变量的函数中。
这在这里完美无缺:
...
req.flash('msg', 'some msg');
res.redirect('/page');
对于.get()
app.get('/page', (req, res) => {
res.render('page', { flash: req.flash('msg') });
});
请注意,每次获取Flash内容时,该内容都会被删除:
req.flash('msg', 'some msg');
console.log(req.flash('msg')); // prints 'some msg'
console.log(req.flash('msg')); // prints []
此外,我建议您检查Brian MacArthur的this very good gist。