快速连接闪存仅在刷新后不在同一页面上显示。如何解决这个问题?

时间:2018-02-04 11:25:51

标签: javascript node.js mongodb express connect-flash

  

以下是注册路径

 router.post("/register", function(req, res){
var newUser=    new User({username:req.body.username});
   User.register(newUser,req.body.password, function(error,user){
       if(error){
          req.flash("error", error.message);
            return res.render("register.ejs");
       }else{
           passport.authenticate("local")(req, res ,function(){
                req.flash("success","Welcome to PhotoDiary, " + user.username);
               res.redirect("/diary");
           });
       }
   });
});
  

下面是护照本地

app.use(function(req, res, next){
res.locals.currentUser = req.user;
res.locals.error = req.flash("error");
res.locals.success = req.flash("success");
next();
  

我把flash-connect放在寄存器路由req.flash中(“error”,error.message);   当我注册时,它会在另一次刷新后显示该消息,而不是在同一页面上

1 个答案:

答案 0 :(得分:0)

使用res.locals向视图发送错误不是一个好习惯,假设您正在使用EJSPug,您还可以将您的消息和其他数据发送到此处查看文件方式。



router.post("/register", function(req, res){
var newUser=    new User({username:req.body.username});
User.register(newUser,req.body.password, function(error,user){
       if(error){
           req.flash("error", "An Error Has Occured");
           var data = {
              page_title : 'Register', // Set Page Title Dynamically
              message : req.flash('error'), // Set Message
           };
            return res.render("register.ejs" , data);
       }else{
           passport.authenticate("local")(req, res ,function(){
           req.flash("success","Welcome to PhotoDiary");
           var data = {
              page_title : 'Register', // Set Page Title Dynamically
              username : user.username,
              message : req.flash('success'), // Set Message
           };
              res.redirect("/diary", data);
           });
       }
   });
});




您可以使用这种方式使用变量访问视图文件中的数据(EJS示例)



<Head>
   <title><%= page_title %></title>
</head>

<div class="alert alert-success">
      <%= message %> <%= username %> 
</div>

<h1> Welcome </h1>
&#13;
&#13;
&#13;