节点 - connect-flash无法重定向

时间:2017-01-09 23:45:26

标签: node.js express connect-flash

我遇到了一些关于连接闪存的奇怪问题,我已经以完全相同的方式在其他项目中使用它并且它运行正常,这就是我所拥有的:

有些路线

if (err) {
    req.flash('message', [{
      class: 'alert-danger',
      message: 'TEST'
    }]);

    res.redirect('/error');
}

错误路线

router.get('/error', function (req, res, next) {
  console.log('---in error route')
  console.log(req.flash('message'));

 res.render('error', {
    message: req.flash('message'),
    layout: layout
  });
})

的console.log

---in error route
[ { class: 'alert-danger', message: 'TEST' } ]

error.hbs

{{#if message}} 
    {{#each message}}
        <div class="{{this.class}}">{{this.message}}</div>
    {{/each}} 
{{/if}}

显然它在那里,但是没有打印输出,如果我将第一条路线中的确切东西复制到错误,它会显示(这对我来说不起作用,但只是为了测试确保hbs模板逻辑工作):

router.get('/error', function (req, res, next) {

  req.flash('message', [{
    class: 'alert-danger',
    message: 'TEST'
  }]);
  res.render('error', {
    message: req.flash('message'),
    layout: layout
  });
})

它可能很简单,但我不知道它是什么。

3 个答案:

答案 0 :(得分:5)

经过一些实验和纯粹的意外后,我发现控制台.log显然清除了闪光!!!!

我希望这有助于遇到此问题的任何人。

答案 1 :(得分:2)

我知道您已经找到了解决方案,但对于任何遇到相同问题的人来说,问题实际上是当您使用req.flash()检索Flash消息时,实际上删除检索后的那条消息。

如果你这样做了:

console.log(req.flash('message'));
console.log(req.flash('message'));

您会收到类似于此输出的内容:

[ 'TEST' ] 
[]

这是因为第一次调用req.flash('message')会检索 删除给定的消息。

另外,你做过这个:

req.flash('message');
console.log(req.flash('message'));
console.log(req.flash('message'));

您将收到类似于此的输出:

[]
[]

答案 2 :(得分:0)

检查您使用的快递的版本。我遇到的问题与使用带有连接Flash的Express 4.x.x相同。 Connect-flash适用于express 3.x.x,Connect-flash-plus适用于express4.x.x。