LUK*_*KER 0 node.js express express-session
我知道其他人也遇到过这种情况,但我的 Express 会话没有保存。我浏览了尽可能多的问题和线索,但找不到解决办法。请让我知道我做错了什么。谢谢!
这是它的初始化位置:
app.use(session({
secret: 'BigSecret',
resave: true,
cookie: {
maxAge: 24 * 60 * 60 * 1000 * 7, //seven days
secure: false
},
saveUninitialized: true
}));
Run Code Online (Sandbox Code Playgroud)
以及它在路线中使用的位置:
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
}
});
Run Code Online (Sandbox Code Playgroud)
另外,对于某些上下文,我返回一个渲染的 EJS 页面,这就是最后渲染的内容。
问题可能出在这段代码中:
\nif (!req.session.views) {\n req.session.views = 0;\n} else {\n req.session.views++;\n}\n
Run Code Online (Sandbox Code Playgroud)\n第一个请求的值req.session.views
将为undefined
,因此!req.session.views
将计算为true
并且您\xe2\x80\x99ll 将值设置为0
.
下一个请求以及此后的每个请求, 的值req.session.views
将是0
。每次!0
都会评估为true
,您\xe2\x80\x99只需再次将该值设置为0
。
您可能想将其更改为类似的内容if (!(\'views\' in req.session))
。if (typeof req.session.views === \'undefined\')
或者,您可能希望只设置req.session.views = 1;
第一个请求,因为这是第一个视图。然后,在第二个请求中,!req.session.views
它将!1
计算为false
,并且您的值将增加。