簡體   English   中英

休息成功時 req.flash() 不工作

[英]req.flash() not working when rest succeed

我在閃爍req.flash('success','Page Edited!');遇到問題req.flash('success','Page Edited!'); 在管理員/頁面上,而我可以在req.flash('danger',"Page slug already exsists")具有相應錯誤的頁面時輕松閃爍req.flash('danger',"Page slug already exsists") 它僅在我重定向和查詢到 mongoDB 時發生。

我的代碼是

router.post('/edit-page/:slug',function(req,res){
  req.checkBody('title','title must have a value.').notEmpty();
  req.checkBody('content','Content must have a value.').notEmpty();
  
  var title = req.body.title;
  var slug = req.body.slug.replace(/\s+/g,'-').toLowerCase();
  if (slug=="")slug= title.replace(/\s+/g,'-').toLowerCase();
  var content = req.body.content;
  var id = req.body.id;

  var errors = req.validationErrors();
  if (errors){
      res.render('admin/edit_page',{
          errors:errors,
          title:title,
          slug:slug,
          content:content,
          id:id
         });
         console.log(errors)
      }else{
     Page.findOne({slug: slug,_id:{'$ne':id}}, (err,page)=>{
      if (page){ 
          req.flash('danger',"Page slug already exsists")
          res.render('admin/edit_page',{
              title:title,
              slug:slug,
              content:content,
              id:id
             });
             console.log(errors)
      }else{
          Page.findById(id, function (err,page){
            if(err){
              console.log(err);
            }else{
              page.title=title;
              page.slug=slug;
              page.content=content;
               page.save(function(err){
                
                
              if(err) return console.log(err);
                console.log('debug');
                
                res.redirect('/admin/pages');
           //this is the code that wont flash to another page
                req.flash('success','Page Edited!');
            });
            }
            
            
          });
      }
     });
  }  
});

問題是您在設置 flash 消息之前重定向用戶

                res.redirect('/admin/pages');
           //this is the code that wont flash to another page
                req.flash('success','Page Edited!');

反轉這些線應該有效。

從文檔中不是很清楚,但是res.redirect()工作方式就像res.send() / res.end() (並且通常是您在請求處理程序中做的最后一件事)。

暫無
暫無

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

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