【问题标题】:how to send a flash message with res.redirect('/') sails js如何使用 res.redirect('/')sails js 发送 Flash 消息
【发布时间】:2014-03-11 20:07:27
【问题描述】:

如何在 Sails 中使用res.redirect('/') 发送快讯?

当我检查控制器中的某些条件时,我想重定向到另一个 url,并传递一条 flash 消息。

我是 Sails 的新手,因此我们将不胜感激。

控制器动作:

module.exports ={
   index: function (req, res) {

    if(req.param('key')){
      req.flash('message', 'welcome key is present');
      res.redirect('/view/');
    } else {
      req.flash('message', 'welcome key is not present');
      res.redirect('/');
    }

  }
}

提前致谢。

【问题讨论】:

    标签: node.js sails.js


    【解决方案1】:

    您的代码对于控制器来说看起来不错。在您看来,您可以以req.flash('message') 的身份访问闪存消息,因此在.ejs 文件中,例如,它将是<%- req.flash('message') %>

    【讨论】:

    • 哎呀对不起。我不知道如果我曾经控制台记录闪存,那么它也会清除它的值。
    • 这也把我搞砸了。我一直在控制台中返回它......嘘!
    • 为什么我看不到关于 req.flash 的文档?
    【解决方案2】:

    对于任何带有数据的重定向,我发现更好的方法是将 http 代码设置为 307。它将使用 post/put/delete 数据重定向。

    req.flash('message');
    res.redirect(307, '/');
    

    【讨论】:

      【解决方案3】:

      另一种解决方案是在渲染重定向模板的路由中传递消息参数。

      让我们以你的例子为例(稍作修改):

      module.exports ={
         index: function (req, res) {
      
          if(req.param('key')){
            req.flash('info', 'welcome key is present' );
            res.redirect('/view/');
          } else {
            req.flash('info', 'welcome key is not present');
            res.redirect('/');
          }
      
        }
      }
      

      然后在'view'的路径中,你会有这样的东西:

      app.get('/view', function(req, res){
          var messages = {};
          if (typeof res.locals.messages.info != 'undefined'){
              messages = res.locals.messages.info;
          }
          res.render('view.ejs', {
              messages: messages
          });
      });
      

      然后在你的view.ejs中:

      <% if (typeof messages != 'undefined' && messages.length > 0) { %>
                  <% for (var i in messages) { %>
                      <div class="alert alert-info">
                          <%= messages[i] %>
                      </div>
                  <% } %>
      <% } %>
      

      也在你的主 server.js 文件中:

      app.use(function(req, res, next) {
          res.locals.messages = req.flash();
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-06-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-07-06
        • 2010-10-25
        • 1970-01-01
        • 2016-08-03
        相关资源
        最近更新 更多