Узел 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')
,