关于connect-flash的问题
发布于 11 年前 作者 CarlosRen 4864 次浏览 最后一次编辑是 8 年前

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吧。照着网上说的就行了。不会错的。这玩意没什么复杂的。

回到顶部