Flash消息未显示在页面重定向上

时间:2019-07-13 17:50:08

标签: javascript node.js

我正在使用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>
<% } %>

2 个答案:

答案 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变量