[英]Node.js why is my session object empty after adding values to it
我是node.js的新手,我被困在这里。 我的路由器中有以下代码:
router.get('/', function(req, res, next) {
// Initialize the game
if(!req.session.gameStarted) {
req.session.gameStarted = true;
req.session.serverStocks = [];
setInterval(function() {
req.session.serverStocks.push('new object');
console.log('This works as it should, returns an array full of objects ->');
console.log(req.session.serverStocks);
}, 4000);
}
else {
console.log('After refresh, this is always empty ->');
console.log(req.session.serverStocks);
console.log('Although this returns "true" as it should which means sessions work OK ->');
console.log(req.session.gameStarted);
}
res.render('pages/homepage', { title: 'Hello' });
});
我的目标是,当用户首次加载页面时,它将为他/她初始化一个空的会话对象。 然后每4000秒将“新对象”字符串添加到其中。 第一次访问部分运行良好,但是当我刷新页面时,会话对象始终为空。 我想念什么? 什么是正确的方法?
///这是app.js中与会话相关的部分
var session = require('express-session')({
secret: 'shhh_very_secret',
resave: true,
saveUninitialized: true,
cookie: { secure: false }
});
var sharedsession = require("express-socket.io-session");
// Express
var app = express();
// Config (game and app settings)
var config = require('./config/config.js');
app.config = config;
// Session
app.use(session);
// Socket.io
app.io = socket_io();
app.io.use(sharedsession(session, {
autoSave:true
}));
我使用的是socket.io,但是从客户端删除了它之后,它就不会影响代码了(或?)。
//编辑:我认为setInterval函数内部的代码正在使用自己的作用域,因为如果我在函数外部检查它,实际上并没有在对象中添加任何内容
Express不支持开箱即用的会话。 确保您正在使用添加会话的中间件,例如https://github.com/expressjs/session
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.