Узел JS(Express) connect-flash не работает при действии перенаправления

Мне интересно, почему моя Connect-Flash не работает. Я знаю, что connect-flash пытается сохранить сообщение в сессии. Итак, я объявляю сессию так:

app.use(session());

Затем я настроил вспышку:

app.use(flash());

Проблема в том, что когда я использовал с connect-flash, он не показывал только установленное сообщение после действия перенаправления.

req.flash('flash_var', 'ok');
res.redirect('/mail/send');

Я не смог увидеть ни одного сообщения на маршрутизаторах / mail / send.

app.get('/mail/send', function(req, res) {
  res.render('mail/console', {
    console.log("flash : "+req.flash('flash_var'); // null
    message: req.flash('flash_var')
  });
});

В консольном сообщении печатаются нулевые значения. Похоже, что предыдущий шаг не передает значение нормально. Конечно, я не видел 'flash_var' на странице ejs.

Что не так с моим кодом?

if(req.flash("flash_var") != ""){
  flash_var = req.flash("flash_var");
  console.dir("flash_var dir : "+req.flash("flash_var"));
}

1 ответ

Вы не используете req.flash('flash_name') чтобы вернуть флеш сообщение. Что бы вы сделали, это req.flash()['flash_name'], В вашем случае значение сообщения в вашем объекте опций res.render будет req.flash()['flash_var'], req.flash() не является отдельным получателем, он возвращает объект, содержащий все вспышки в объекте запроса. Другой способ использования req.flash() с двумя строковыми входами, как вы сделали с req.flash('flash_var', 'ok'),

Другие вопросы по тегам