【发布时间】:2021-08-30 05:09:27
【问题描述】:
我试图使用 Set 作为会话值,但由于某种原因,我得到了这个意外的结果。我正在从客户端向这条路由发出两个请求。
app.post("/api/add_to_cart", (req, res) => {
console.log(req.session.productList);
if (req.session.productList === undefined)
req.session.productList = new Set();
console.log(req.session.productList);
req.session.productList.add('one');
console.log(req.session.productList);
res.send();
});
输出:
undefined
Set(0) {}
Set(1) { 'one' }
{}
{}
TypeError: req.session.productList.add is not a function
但是如果我使用 Set 的数组,它会按预期工作
app.post("/api/add_to_cart", (req, res) => {
console.log(req.session.productList);
if (req.session.productList === undefined)
req.session.productList = [];
console.log(req.session.productList);
req.session.productList.push('one');
console.log(req.session.productList);
res.send();
});
输出:
undefined
[]
[ 'one' ]
[ 'one' ]
[ 'one' ]
[ 'one', 'one' ]
由于某些未知原因,Set 对象被更改为 {}。
【问题讨论】:
-
您使用的是哪个store implementation?它如何序列化和反序列化会话状态?
-
一切都设置为默认值,我没有添加任何商店实现。这就是你所看到的和只有秘密的初始化
标签: javascript node.js express express-session