Я слежу за этим учебником YouTube и пытаюсь понять, как работать с connect-flash
npm. Это код, который я использую:
СЕРВЕРНАЯ СТОРОНА:
//app.js
const session = require('express-session');
const flash = require('connect-flash');
app.use(session({
name: SESSION_NAME,
resave: false,
saveUninitialized: false,
secret: SESSION_SECRET,
cookie: {
maxAge: SESSION_LIFETIME,
sameSite: true,
secure: IN_PROD
}
}));
app.use(flash());
//users.js
//somewhere in USER LOGIN POST REQUEST:
if(!results.length) {
console.log(" > Cannot fetch user from the database");
req.flash('flash', 'some message in the alert');
return res.redirect('/user_login');
}
//USER LOGIN GET REQUEST:
router.get('/user_login', redirectHome, (req, res) => {
return res.render('userEntries/login', {message: req.flash('flash')});
});
КЛИЕНТСКАЯ СТОРОНА (E JS)
<body>
<% if(message.length > 0) { %>
<div class="alert alert-success" style="text-align: center">
<button type="button" class="close" data-dismiss="alert">×</button>
<strong>INTRO: </strong> <%= message %>
</div>
<% }%>
......
Теперь запросы post
и get
отлично работают в моем приложении, но я просто не понимаю, почему сообщения fla sh не работают. Это то, что я пробовал:
- В операторе E JS: я также пробовал
if(message){...}
- Я пытался сохранить сообщение fla sh в
req.locals
- Я пробовал использовать этот учебник - тоже не сработало.
Обратите внимание, что иногда срабатывают предупреждения, а иногда сообщения передаются несколько раз ! На рисунке ниже я дважды добавил неверное имя пользователя и пароль, ждал ок. пять минут и перезагрузили страницу, и вот что произошло:
ДЕМО
Понятия не имею, что делаю не так. Если у вас есть полезная информация, дайте мне знать. Спасибо