Вы можете использовать connect-flash
, Это промежуточное ПО Flash-сообщений для Express. Я советую вам прочитать немного об этом.
Флэш - это специальная область сеанса, используемая для хранения сообщений.
Сообщения записываются на флэш-память и очищаются после отображения на
Пользователь. Вспышка обычно используется в сочетании с перенаправлениями,
обеспечение доступности сообщения для следующей страницы, которая должна быть
оказаны.
Во-первых, в вашем файле app.js
требуется этот модуль const flash = require('connect-flash');
Затем в том же файле и перед определением маршрутов добавьте этот код
app.use(flash());
// Add errors on locals.
app.use(function (req, res, next) {
res.locals.errors = req.flash("error");
next();
});
res.locals
- это объект, содержащий локальные переменные ответа, доступные для следующего визуализированного представления.
Далее, в вашем контроллере, перед res.redirect("/login")
, добавьте ваше сообщение об ошибке в объект locals.
// Otherwise redirect to get /login
// TODO: Re-render page with error message and 401 status code
req.flash("error", "User does not exist.");
res.redirect("/login")
Последнее, что вам нужно сделать, это добавить errors
в ваш логин. Я не уверен насчет руля, но в ejs
файлах я использую это:
<div>
<% errors.forEach(function (error) { %>
<p><%= error %></p>
<% }) %>
</div>
Возможно, в руле вы можете использовать что-то вроде этого
<div>
{{#each errors}}
<p>{{this}}</p>
{{/each}}
</div>
Опять же, вы должны прочитать, как работает connect-flash
и что вы можете сделать с этим модулем. Это очень полезно для сообщений различного типа, а не только для сообщений об ошибках.