簡體   English   中英

重定向時的 Flash 消息 - Express

[英]Flash Message on redirect - Express

使用重定向時我無法顯示我的 flash 消息(盡管使用渲染時一切正常)

如果我使用此代碼呈現視圖,則消息顯示正常

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('/');

索引.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>
<% } %>

謝謝

我很確定問題出在全局變量的函數中。

這在這里完美無缺:

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

而對於 .get()

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

請注意,每次獲取 Flash 內容時,它都會被刪除:

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

另外,我建議您查看 Brian MacArthur 的這篇非常好的要點

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM