首页 > 解决方案 > 保存会话变量错误的时间间隔

问题描述

所以我正在使用快速会话和 socket.io 快速会话共享。现在看来这个错误仅来自 express,似乎将时间间隔保存到会话中总是这样做的。我很困惑,你不能用 express-session 做到这一点吗?

所以这是我设置间隔并尝试保存它的地方:

exports = module.exports = function (io) {

  io.sockets.on('connection', function (socket) {

    // FIGHT CALL
    socket.on('fight mob', (mobId) => {
      var session = socket.handshake.session;

let sql = 'SELECT * FROM mobs WHERE id = ?';

      // If there is no interval, or if it is false, intiate one.
      if (session.userdata.actionInterval === undefined ||
          session.userdata.actionInterval === false) {

        db.query(sql, mobId).then(results => {
          session.userdata.actionInterval = setInterval(() => {
            battle.battle(socket, results[0], session);
            session.userdata.intervalTime = Date.now();
          }, 6000);
          session.userdata.intervalTime = Date.now();
          session.userdata.autos = 5;
          session.save();
          battle.battle(socket, results[0], session);
        }).catch((err) => {
          console.log(err);
        });

这是我得到的错误:

TypeError: Converting circular structure to JSON
    at JSON.stringify (<anonymous>)
    at hash (/home/kogadmin/www/node_modules/express-session/index.js:580:19)
    at Session.save (/home/kogadmin/www/node_modules/express-session/index.js:380:21)
    at db.query.then.results (/home/kogadmin/www/io/fight.io.js:30:19)
    at <anonymous>
    at process._tickCallback (internal/process/next_tick.js:188:7)

这里的问题是:我完全不知道这是什么原因或原因造成的。如果我只是在间隔内尝试控制台并删除数据库查询,它甚至会这样做。我完全被难住了。

标签: javascriptnode.jssessionexpress-session

解决方案


推荐阅读