13

- 编辑 -

我写了一些中间件来做到这一点: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 来显示 flash。

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

注意:在咖啡脚本中

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

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

4

5 回答 5

30

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

于 2012-05-02T02:37:56.493 回答
7

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

于 2012-09-18T20:53:08.347 回答
5

从上面蒂姆的链接:

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

Express 2.x migrate to 3.x页面说明如下:

  • req.flash()(只使用会话:req.session.messages = ['foo']或类似的)
于 2013-08-14T15:10:06.740 回答
5

除了connect-flashand express-flash,还有 just flash,它是由 expressjs 团队制作的(我认为这是一个奖励)。使用超级简单:

安装:

npm i flash

应用程序.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

注意上面的代码是如何改变它们的;如果您只是读取数组,则闪存消息会一直挂在会话中(这对于重定向非常有用)。

于 2015-04-19T06:04:22.837 回答
1

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

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

于 2013-09-24T04:29:11.957 回答