我正在使用nodejs服务器和mysql数据库。成功添加新行后,我将如下所示填充Flash消息成功变量:
req.flash('success','New parts has been added to the database')
我也正在设置Flash消息中间件,如下所示:
//设置Flash中间件:
app.use(function(req,res,next){
res.locals.error=req.flash("error");
res.locals.success=req.flash("success");
next()
})
我认为填充res.locals
将使我能够检索所有ejs模板中的变量,而不必亲自将其手动发送到模板中:
router.get("/", (req, res) => {
res.render("home",{success:req.flash('success')})
})
我尝试了两者,但是在模板中仍然看不到Flash消息:
<% if(success && success.length >0){ %>
<div class="flash">
<div class="color red"></div>
<span class="text"> <p><%=success%></p></span>
<div class="close">
<span></span>
</div>
</div>
<% } %>
答案 0 :(得分:0)
自从我将Flash用于Node.JS以来已经有一段时间了,但是如果您创建一个中间路线(如“ / redirect”)来设置刷新成功消息,然后立即将其重定向回您的根路由,该怎么办?
app.get('/redirect', function(req, res){
req.flash('success','New parts has been added to the database')
res.redirect('/');
});
然后更新视图以检查是否成功
<% if(success){ %>
答案 1 :(得分:0)
问题是我在做console.log(req.flash())
,正在擦除faslh变量