从不同的路线访问Express会话是不确定的?

我试图实现无限滚动。 在我的第一条路线中,我从数据库中加载5个元素,并存储上次看到的项目的ID。 要加载更多的数据getNextHomeContent被调用,但由于某种原因req.session.lastseen未定义。

server.js

var express = require('express'); var session = require('express-session'); var app = express(); var mongoose = require('mongoose'); var logger = require('morgan'); var bodyParser = require('body-parser'); var cors = require('cors'); //imports database configuration var databaseConfig = require('./config/database'); //defines route file to use var router = require('./app/routes'); //connect to datbase mongoose.connect(databaseConfig.url); app.listen(process.env.PORT || 8080); console.log("App listening on port 8080"); app.use(bodyParser.urlencoded({ extended: false })); // Parses urlencoded bodies app.use(bodyParser.json()); // Send JSON responses app.use(logger('dev')); // Log requests to API using morgan app.use(cors()); app.use(session({ resave: true, saveUninitialized: true, secret: 'keyboard cat', cookie: { maxAge: 60000, secure: false } })); router(app); 

这里是我的控制器在homeCtrl.js我的路线

 exports.getHomeContent = function(req, res, next) { req.session.lastseen = null; homeContent.find({}) .sort({ "_id": -1 }) .limit(5) .exec(function(err, content) { if (err) { res.send(err); } var last = content.slice(-1); req.session.lastseen = last[0]._id; console.log("lastseen first is " + req.session.lastseen); res.json(content); }); } exports.getNextHomeContent = function(req, res, next) { console.log("lastseen is " + req.session.lastseen); homeContent.find({ "_id": { "$lt": req.session.lastseen } }) .sort({ "_id": -1 }) .limit(5) .exec(function(err, content) { if (err) { res.send(err); } console.log("WTF:" + content.slice(-1)); var lastitem = content.slice(-1); req.session.lastseen = lastitem[0]._id; res.json(content); }); } 

当运行Home内容时,req.session.lastname被设置为最后一个项目的ID。 然而,当getNextHomeContent()运行时,req.session.lastitem变得不确定。 谁能帮我这个?

谢谢!!