Почему ошибки прошивки не работают все время? - PullRequest
0 голосов
/ 25 ноября 2018

Я использую экспресс-вспышку для флеш-сообщений.Это работало отлично, пока я не использовал перенаправление на req.header ("Referer").В частности, я пытаюсь добавить товар в корзину, но не хочу добавлять его, если он уже есть в корзине.Следующий код беспокоит меня, так как я не понимаю его поведение.

router.get("/add/:id, (req, res) =>{
    var backURL= req.header("Referer") || "/";
    var cart= req.session.cart;
    var productId= req.params.id;
    var found=0;
    cart.items.forEach(item =>{
        if(item.id===productId){
            found=1;}
    })
    if(found){
        req.flash("error", "Item Already in Cart");
        res.redirect(backURL);} else{
        res.redirect(backURL); }
})

Это промежуточное ПО выполняет другие функции, такие как добавление товаров в корзину в случае их отсутствия.Эта часть работает хорошо, и благодаря найденной переменной console.logging, я уверен, что код всегда находит дубликаты, но он возвращает ошибки флэш-памяти не всегда.Я использую EJS в качестве движка просмотра.Кто-нибудь может помочь?Большое спасибо

PS Конечно, я передавал ошибки ejs с

router.use( (req,res,next)=>{
    res.locals.error =  req.flash("error");
    next();)}

1 Ответ

0 голосов
/ 25 ноября 2018

Сохраните сообщение в сеансе и прочитайте его из сеанса на целевой странице, чтобы отобразить сообщение, поскольку перед сохранением флэш-сообщения сеанс выполняет перенаправление.Для получения более подробной информации пройдите по ссылке 1.

req.flash('message', 'Please check your email to confirm it.');
req.session.save(function () {
  res.redirect('/register');
});

Ссылка 1: https://github.com/mweibel/connect-session-sequelize/issues/20Ссылка 2: https://github.com/mweibel/connect-session-sequelize/issues/7#issuecomment-59469816

...