- 编辑 -
我写了一些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
我们如何从视图中访问会话数据然后清除它?我们无法在视图渲染后清除会话的内容,但是我们无法清除它,因为它不会到达视图所以我对如何解决这个问题感到有点迷失?
答案 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-flash
和express-flash
之外,还有flash
,这是由expressjs团队制作的(我认为是奖励)。超级简单易用:
npm i flash
app.use(session()); // session middleware
app.use(require('flash')());
app.use(function (req, res) {
// flash a message
req.flash('info', 'hello!');
next();
})
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...)