Express Session Not Saving



我知道其他人也遇到过这种情况,但是我的Express会话没有保存。我浏览了尽可能多的问题和线索,但我不能找到一个解决方案。请让我知道我做错了什么。谢谢!

这里是初始化的地方:

app.use(session({
secret: 'BigSecret',
resave: true,
cookie: {
maxAge: 24 * 60 * 60 * 1000 * 7, //seven days
secure: false
},
saveUninitialized: true
}));

以及在路由中使用的地方:

router.get('/route', async (req, res) => {
if (!req.session.views) {
req.session.views = 0;
} else {
req.session.views++
}
console.log(req.session);
...the rest of the route...
res.render('pages', {
key: val,
anotherKey: anotherVal
}
});

另外,对于某些上下文,我将返回一个渲染的EJS页面,因此这就是最后的渲染。

问题可能在这里的代码中:

if (!req.session.views) {
req.session.views = 0;
} else {
req.session.views++;
}

第一个请求,req.session.views的值将是undefined,因此!req.session.views的值将计算为true,并且将值设置为0

下一个请求,以及之后的每个请求,req.session.views的值都将是0。每次!0将求值为true,您只需再次将值设置为0

你可能想把它改成if (!('views' in req.session))if (typeof req.session.views === 'undefined')等。

或者,您可能希望只在第一个请求上设置req.session.views = 1;,因为这是第一个视图。然后在第二次请求时,!req.session.views将是!1,其将计算为false,并且您的值将增加。

最新更新