关于connect-flash的问题
app.js
var flash = require('connect-flash');
app.use(flash());
app.post('/loginaction',function(req,res){
var user = new User(req.body.user);
user.save(function(err){
if(!err){
req.flash('info','flash!!save!!');
res.redirect('/');
}else{
res.redirect('/login');
}
});
});
jade
form(method = 'post' ,action='/loginaction')
fieldset
legend register a user
div.clearfix
label Login
div.input
input(name='user[name]',class='xlarge')
input(name='user[pwd]',type='password',class='xlarge')
div.actions
input(type='submit',value='save',class='btn primary')
input(type='reset',value='reset',class='btn primary')
input(type='button',value='cancel',class='btn primary')
script alert(typeof flash);
script alert(flash.info);
0.学习阶段,我只想在登陆成功的时候告诉用户一下。。。顺便存到session中保存登陆信息 1.flash.info undefined 。。。请问各位大牛 问题出在哪? 2.node 3.X以后req.flash被req.session.messages = [‘foo’] ;替代,但是这玩意照着网上说的设置了
app.use(express.cookieParser());
app.use(express.session({
secret : "hardwork!"
}));
app.use(express.session({ cookie: { maxAge: 60000 }}));
app.post('/loginaction',function(req,res){
var user = new User(req.body.user);
user.save(function(err){
if(!err){
req.session.messages = ['foo'] ; // jade页面上如何拿到呢?????
res.redirect('/');
}else{
res.redirect('/login');
}
});
});
5 回复
0.0 昨天我也遇到这问题了,擦
jade 上如何拿到? 按我个人的想法,是不是可以做个 middleware 弄个名为 flash 的 helper 来拿到?
jade不是会渲染成html嘛。。我想问的是。。怎么读取session?有木有官方的方法或者比较规范的方法,求推荐一下
@CarlosRen 传 session 给 jade 读啊。通过 res.locals
1.flash.info undefined 。。。 肯定是你没有把flash的内容传到jade。在express里,你需要手动把所有jade需要的信息通过res.render传给你的模板(jade)
2.node 3.X以后req.flash被req.session.messages = [‘foo’] ;替代,但是这玩意照着网上说的设置了 node没有3.X,你说的是express吧。照着网上说的就行了。不会错的。这玩意没什么复杂的。