2

以下是注册路线

 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); 当我注册时,它会在另一次刷新后显示消息,而不是在同一页面上

4

1 回答 1

0

将错误发送到视图不是一个好习惯res.locals,假设您正在使用EJS或者Pug您也可以通过这种方式发送消息和其他数据来查看文件。

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>

于 2018-02-04T13:22:43.603 回答