Флэш-сообщение о перенаправлении - Экспресс - PullRequest
0 голосов
/ 01 мая 2018

Не удается отобразить мое флэш-сообщение при использовании перенаправления (хотя все нормально при использовании рендера)

Если я использую этот код для рендеринга вида, сообщение выглядит нормально

req.flash('success_msg', 'Successfully Registered');
res.locals.message = req.flash();
res.render('home');

но если я хочу перенаправить (что я делаю в этом случае), то сообщение не отображается

req.flash('success_msg', 'Successfully Registered');
res.locals.message = req.flash();
res.redirect('/');

index.js

// Global Vars
app.use(function(req, res, next) {
  res.locals.success_msg = req.flash('success_msg');
  res.locals.error_msg = req.flash('error_msg');
  res.locals.error = req.flash('error');
  next();
});

// Use Routes
app.use('/', routes);
app.use('/', users);

Любые идеи о том, как справиться с этим, пожалуйста, если я не предоставил достаточно информации, пожалуйста, дайте мне знать, что добавить сюда

Что я заметил, так это то, что я могу выйти из сообщения до перенаправления

req.flash('success_msg', 'Successfully Registered');
var message = res.locals.message = req.flash();
console.log(message); // { success_msg: [ 'Successfully Registered' ] }
res.redirect('/');

Но на мой взгляд, это никогда не проявляется

<% if (locals.message) { %>
  <div class="alert alert-success alert-dismissible fade show text-center" role="alert">
    <strong><%= message.success_msg %></strong>
    <button type="button" class="close" data-dismiss="alert" aria-label="Close">
      <span aria-hidden="true">&times;</span>
    </button>
  </div>
<% } %>

Спасибо

1 Ответ

0 голосов
/ 12 июля 2018

Я почти уверен, что проблема где-то в функции для ваших глобальных переменных.

Здесь работает без нареканий:

...
req.flash('msg', 'some msg');
res.redirect('/page');

А для .get ()

app.get('/page', (req, res) => {
    res.render('page', { flash: req.flash('msg') });
});

Помните, что каждый раз, когда вы получаете флэш-контент, он удаляется:

req.flash('msg', 'some msg');
console.log(req.flash('msg')); // prints 'some msg'
console.log(req.flash('msg')); // prints []

Также я предлагаю вам проверить эту очень хорошую суть от Брайана Макартура.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...