簡體   English   中英

Node.js為什么將會話對象添加值后為空

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM