新版本的express取消了req.flash,建议直接使用req.session (just use sessions: req.session.messages = [‘foo’] etc)
按照之前req.flash的介绍:通过它保存的变量生命周期是用户当前和下一次请求,之后会被清除。 如果所有仅需要request作用域使用的变量全部都存放在req.session,那么每次用完岂不是还要不停得手工将req.session中没用的变量置为null???
req.flash的原理就是這樣啊, 存儲在session裏面。取出一次之後就刪掉它。 如果不想手動實現也可以用npm install connect-flash模塊啊。
嗯,感谢,已经安装了connect-flash模块。
@leon0615 嘿嘿 沒事 我昨天也在糾結這個問題呢。
请问在ejs模板中如何获得session啊?貌似在ejs中无法直接操作session的。
将session的内容,存放到app.locals。
将session的内容,存放到app.locals。或者req.locals。
app.locals=req.locals 将变量同步到views
@sunuxreg session一般会保存登陆用户(作为用户登陆的判断),如果ejs需要获取session中某个object或变量,通过在后端请求路径发出之后,将session的变量读出来,render到ejs页面上就行了。
app.get('/sessionDemo', function(req, res, next){
var loginUser = req.session['loginUser'];
res.render('index', {title: 'Session Demo', loginUser: loginUser});
});
这个问题我没研究过,有一个关于 connect-flash 简单的例子可以实现connect-falsh 信息提示,但就不知道跟楼主的问题有没有关系 connect-flash 用法详解
试试自己写个connect-flash中间件 出来