Express 3.0 req.flash?

– 编辑 –

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


因此,自从Express 3.0发布以来,这些更改已经消除了req.flash()

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

所以现在是我的问题。 他们build议在本地使用req.session.messages来显示flash。

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

NB:在咖啡剧本

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

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

您可以使用连接闪光中间件将req.flash()function添加到Express 3.0中。

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

从Tim的链接上面:

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

Express 2.x迁移到3.x 页面说:

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

除了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会一直挂在会话中(这对于redirect来说很有用)。

安装连接闪光中间件,然后要求

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