req.flash不显示消息

时间:2018-12-27 12:38:21

标签: node.js express flash-message

我在快递项目中使用了把手。并且我使用了req.flash()方法,但是它不会显示在我的hbs文件中。

这是我的代码:

 req.flash('message','Tag already exists');
 res.redirect('/p/tags/add');  

在.hbs文件中:

{{#if message}}
<h1>Tag Already ِExists</h1>
{{/if}}

也在我的app.js中:

app.use(flash());

似乎是什么问题?

谢谢!

2 个答案:

答案 0 :(得分:0)

You need to use your flash message inside your redirected URL like this:

app.get('/p/tags/add', function(req, res){
  res.render('yourhbsfile', { message: req.flash('message') });
});

EDIT: So to clarify about the confusion on flash message, it can be set from anywhere before redirecting to any route or inside any middleware before using res.render() and can propagate that message inside req or request object. you may print req and check flash object for better understanding.

答案 1 :(得分:0)

确实不能通过重定向添加 flash。 你必须在重定向前执行 flash 函数,然后你必须在渲染函数中使用它。

boo = (req, res) => {
    req.flash("error", "This is an error!");
    return res.redirect("/index");
}
  • 我正在使用路由,在查看 /index 页面时会执行 indexPage 函数。

渲染功能以查看/index页面。

indexPage = (req, res) => {
    let message = req.flash();
    res.render("index", {
      message: message,
    });
}

以及如何查看Handlebar中的数据index.hbs

{{#if message.error}} 
    {{{message.error}}} 
{{/if}}