Я допустил хитрую проблему. В веб-приложении Nodejs express Express-сеанс middle не может сохранять объект типа reference в нескольких сеансах, пока он работает для * 1005. * примитив значение типа.
Скажем, у меня есть следующий блок кода:
cachedFunc (ссылочный тип) всегда не определен между сеансами, но cachedText (примитивный тип) содержит значение.
Я даже пытался глубоко скопировать cacheFun , который до сих пор не может быть сохранен
Спасибо за помощь!
const _ = require("lodash");
const express = require("express");
const sessionMiddleWare = require("express-session");
const app = express();
app.use(
sessionMiddleWare({
name: "dzbSessionId",
secret: "keyboard cat",
cookie: { maxAge: 66660000 },
resave: false,
saveUninitialized: true
})
);
app.get("/exam", (req, res, next) => {
console.info(req.session.cachedText);/*Primitive Types can be persistent */
if (!req.session.cachedFunc/*always undefined here for referenced value*/) {
try {
req.session.cachedFunc = function(){};
/*even the copied one still can't work*/
//req.session.cachedFunc = _.cloneDeep(function(){});
req.session.cachedText += "freeText";
} catch (e) {}
}
}