Backbone.js + Express 3:req.session未定义

时间:2013-06-22 01:33:58

标签: javascript node.js session express

我正在把头发拉出来,过去我做过Express会话,我已经关注了相关问题上的每一篇Stackoverflow帖子。没有运气。

app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.favicon(__dirname + '/public/favicon.ico')); 
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.cookieParser());
app.use(express.session({ secret: 'ponies' }));
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));

app.get('/api/characters', function(req, res) {        
    // Initially false/undefined
    if (req.session.hasViewed) {
      return res.send(allCharacters.slice(req.session.currentCounter, req.session.currentCounter+2));
    }

    req.session.hasViewed = true;
    req.session.currentCounter = counter;

    res.send(allCharacters.slice(counter, counter + 2));
    counter = counter + 2;
});

为什么req.sessionhasViewedreq.session.currentCounter始终未定义?实际上,并非总是如此,有时在第6或第7次尝试会话对象开始并且它起作用。哪个比从不工作更糟糕。

背景:视图最初应显示2个字符。如果用户按F5刷新浏览器,则应再次显示相同的两个字符,直到他/她点击其中一个字符。清除会话对象是在另一个函数中执行的。

更新:我反复按 F5 ;当您看到个人日志消息时会话启动时。

enter image description here

更新2:好的,所以我不知道这是否有任何区别,但上面的代码位于/api/characters。但是,当通过Backbone路由器以“/”路由加载API时的实际URL,该路由器实例化该路由的新视图。

0 个答案:

没有答案