splice()方法有效,但数组在执行后不会改变

时间:2017-11-13 10:33:06

标签: javascript arrays node.js session express

我正在使用express.js(node.js)来构建应用程序。我在app.js文件夹中将产品数组声明为会话(req.session.products)。 这是POST路线:

router.post('/remove-cart', (req, res, next) => {

    var product_id = req.body.product_id; //get product id from client

    console.log(req.session.products)

    var n = req.session.products.indexOf(product_id); //get position of product id in the array
    req.session.products.splice(n, 1); //remove it

    console.log(req.session.products)

});

在路线的最后,当n = 0时,它会记录下来:

[ '1', '3', '3', '3', '3' ]
[ '3', '3', '3', '3' ]

这是我所期待的,但是,这不会影响主会话(req.session.products),也不会“保存”它。为什么?

1 个答案:

答案 0 :(得分:1)

您真正的问题是您没有将req.session.products数组返回到您的应用,您需要在回复中将其发回。

.post()方法的最后写下这一行:

res.send(req.session.products);