重定向上的Flash消息 - 快速

时间:2018-05-01 11:23:19

标签: javascript node.js express connect-flash

使用重定向时我无法显示我的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">&times;</span>
    </button>
  </div>
<% } %>

由于

1 个答案:

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