快速会话不保存
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
,并且您的值将增加。
我知道其他人对此有 运行,但我的 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
,并且您的值将增加。