Express 3.0 req.flash?

时间:2012-04-17 08:23:52

标签: node.js coffeescript express

- 编辑 -

我写了一些middlware来做这件事:https://npmjs.org/package/flashify


因此,自Express 3.0发布以来,更改已删除了req.flash()

https://github.com/visionmedia/express/wiki/Migrating-from-2.x-to-3.x(来源)

现在这是我的问题。他们建议在本地使用req.session.messages来显示闪光灯。

因此,为了使视图可以访问会话,我们必须执行以下操作:

nb:在咖啡脚本中

app.locals.use (req,res) ->
    res.locals.session = req.session

我们如何从视图中访问会话数据然后清除它?我们无法在视图渲染后清除会话的内容,但是我们无法清除它,因为它不会到达视图所以我对如何解决这个问题感到有点迷失?

5 个答案:

答案 0 :(得分:30)

您可以使用connect-flash中间件将req.flash()功能添加回Express 3.0。

答案 1 :(得分:7)

我相信他们只是将req.flash移至req.session.messages

答案 2 :(得分:5)

来自Tim上面的链接:

这个中间件是从Express 2.x中提取的,在Express 3.x中删除了对闪存的直接支持。 connect-flash将此功能带回Express 3.x,以及任何其他与中间件兼容的框架或应用程序。 +1基本可重用性。

Express 2.x迁移到3.x page说明如下:

  • req.flash()(只使用会话:req.session.messages = ['foo']或类似的)

答案 3 :(得分:5)

除了connect-flashexpress-flash之外,还有flash,这是由expressjs团队制作的(我认为是奖励)。超级简单易用:

安装:

npm i flash

app.js:

app.use(session()); // session middleware
app.use(require('flash')());

app.use(function (req, res) {
  // flash a message
  req.flash('info', 'hello!');
  next();
})

view.jade:

while message = flash.shift() // consume messages as jade reads them
  a.alert(class='alert-' + message.type)
    p= message.message

注意上面的代码如何移动;如果您只是读取数组,那么Flash消息会一直挂在会话中(对于重定向而言很好)。

答案 4 :(得分:1)

安装connect-flash中间件,需要它,然后

app.use(flash())并注意它应该出现在app.use(express.session...)

之前