Я пытаюсь добавить товар в корзину с помощью экспресс-сессии, после нажатия кнопки «добавить в корзину», res.redirect должен перенаправить на страницу корзины.Но количество товаров на странице перенаправленной корзины покупок не обновляется, если я не обновлю страницу вручную, нажав кнопку корзины покупок.
Я подумал, что это может быть связано с асинхронностью, и попытался добавить функцию setTimeout, чтобы задержать обновление страницы ине работалТакже попробовал async / await, не работал.И я обнаружил, что мой вопрос очень похож на res.redirect, показывающий старую информацию после отправки формы? , но в ответе предлагается объединить две функции в одну, так что 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)
});
Любые идеи будут с благодарностью!Большое спасибо!