讨论:express-partials视图助手不能立即显示session数据的问题
发布于 12 年前 作者 duyinghua 7088 次浏览 最后一次编辑是 8 年前

刚发现一个问题,不知道谁有没有遇到过,就是在用express-partials的时候,当往session里面存入数据后render到页面的时候(我在页面显示该条session数据),并不能立刻显示出来,只有刷新一下才能显示。这会不会是该模块包的一个bug 代码很简单,如:

exports.reg = function (req, res) {
    req.session.info="reg";
    res.render('reg', { title:'注册页面' });
};
exports.login = function (req, res) {
    req.session.info="login";
    res.render('login', { title:'用户登录' });
};

app.js中app.configure里写有:

app.use(function (req, res, next) {
  
    res.locals({
        info:req.session.info,
    });
    next();
});

layout页面代码部分

...
信息<%= info%><br/>
<a href="/login">登入</a>
<a href="/reg">註冊</a>
...

然后当在页面来回切换点击按钮的时候,session信息显示的有问题,也就是当点击后刷新页面的话才是真实的session信息,(就好像页面先解析出来以后,session内才进入的信息似的)这个问题有办法解决吗?

2 回复

问题最终找到原因了,app.use这个方法只有在请求达到时才执行一次,然后next去执行相应的控制跳转,这样一来,如果在控制跳转get方法里面给session赋值后并不会立即给res.locals,所以只有下次请求时才能得到真实的session。到底还是误解了app.use这个方法了,我把它当作了Struts2的那种拦截器模式了,以为进出控制跳转的get方法前后都会执行一次,原来不是这样。所以解决方法就是在get方法里面给req.session.info赋值的同时也给res.locals.info赋值

回到顶部