不能在会话变量 express 中使用 "Set"

cannot use "Set" in a session variable express

我试图将 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 对象正在更改为 {}。

来自the docs

req.session

To store or access session data, simply use the request property req.session, which is (generally) serialized as JSON by the store, so nested objects are typically fine.
(highlighting mine)

…和 / 开箱即用。

内置开发专用 MemoryStore does this