0

我在这里拉头发,过去我已经完成了 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.sessionhasViewed并且req.session.currentCounter总是未定义?实际上,并非总是如此,有时在第 6 次或第 7 次尝试会话对象启动并且它可以工作。这比从不工作更糟糕。

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

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

在此处输入图像描述

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

4

0 回答 0