javascript - 保存会话变量错误的时间间隔
问题描述
所以我正在使用快速会话和 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)
这里的问题是:我完全不知道这是什么原因或原因造成的。如果我只是在间隔内尝试控制台并删除数据库查询,它甚至会这样做。我完全被难住了。
解决方案
推荐阅读
- php - 如何使用 php pdo 以逗号分隔在一行中上传多个图像并显示这些图像
- sql - 从存储在 SQL Server 表中的数据中获取上个月的日期值
- javascript - 用 Javascript 播放一次后让 GIF 消失?
- python - 如何确定 numba 的 prange 是否真的正常工作?
- azure - az eventgrid event-subscription create 在 Powershell 中不起作用
- javascript - 将 CSS 过渡添加到不断增长的项目列表中
- php - 使用 slim 框架在 index.php 上找不到错误的来源
- aws-documentdb-mongoapi - AWS DocumentDB 上的密码轮换
- r - 如何更新数据框中的单元格值,这取决于同一列中前面单元格中的值?
- scala - 如何在火花连接期间选择动态列?