我正在尝试使用express-session将商品添加到购物车,单击“添加到购物车”按钮后,res.redirect应该重定向到购物车页面。但是,除非我通过手动单击购物车按钮刷新页面,否则重定向购物车页面上的项目数量不会更新。
我认为这可能与异步有关,并尝试添加setTimeout函数来延迟页面刷新,但此方法不起作用。也尝试过异步/等待,没有用。而且我发现我的问题与res.redirect showing old information after form submission?非常相似,但是答案建议将两个函数组合为一个,这样res.redirect可以工作。由于我的代码包含sql,因此我不确定两个函数是否可以合并。下面是我的router.post代码。
router.post('/:idx', async function (req, res) {
var productId = req.params.idx
cart = new Cart(req.session.cart ? req.session.cart : {});
var queryString = 'SELECT * FROM prod.product_list_details WHERE idx = ?'
await conn.query(queryString, productId, function (err, rows) {
if (err) throw err;
cart_id = rows[0].idx
cart_data = rows[0];
cart.add(cart_data, cart_id)
// cart.increment(cart_id)
req.session.cart = cart;
console.log(req.session.cart)
res.locals.session = req.session;
// callback();
// res.redirect('/shopping-cart');
})
setTimeout(() => {
res.redirect('../shopping-cart');
}, 2000)
});
任何见解将不胜感激!非常感谢!