如果验证失败,如何停止路由到给定的路由

时间:2019-03-20 19:39:10

标签: node.js express ejs

在我的signup.ejs文件中,我已经设置了一个带有请求请求的表单,并且我已经在signup.js文件中编写了/ welcome路由,我试图弄清楚如果验证了如何可以停止对给定路由的请求请求失败,或者随着每次注册失败,我如何动态分配不同的路由,例如错误路由(如果验证失败,则用localhost:3000/signup/error而不是localhost:3000/signup/welcome),它会路由到localhost:3000/signup/welcome,这是不对的。我尝试在signup.ejs文件中设置变量以将其传递给操作,但是,它仅路由到/ welcome,而没有路由到/ error。基本上,我只想查看错误端点,或者如果验证失败就停止POST请求。请提出建议。

  

signup.ejs

<h2>Sign Up</h2>


<% var route = ''; %>
<% if (!messages.error) { %>
<% route = '/welcome' %>
<% }else{ %>
<% route = '/error' %>
<% } %>


<form action="signup<%- route %>" method="post" name="form1">
  

signup.js

router.post('/welcome', function(req, res, next) {

   req.checkBody('name', 'Name cannot be empty').notEmpty();
   req.checkBody('email', 'Please enter valid email').isEmail();
   req.checkBody('password', 'Password should be more than 5').isLength({ min: 5 });
   req.checkBody('password1', 'Password do not match').equals(req.body.password);

   var errors = req.validationErrors();

   if(!errors) {
       var user = {
         name: req.sanitize('name').escape().trim(),
         email: req.sanitize('email').escape().trim(),
         password: req.sanitize('password').escape().trim()
       }
       connection.query('Insert into customers set ?', user, function(err, result) {
        if(err) {
           req.flash('error', err);
           //render to signup
           res.redirect('/signup', {
               title: 'Add New User',
               name: user.name,
               email: user.email,
               password: user.password
           })

        }
            req.flash('success', 'Successfully signed up');
            res.render('welcome', {
                title: 'Signed In'
            });

    })
   }else {
    var error_msg = ''

    errors.forEach(function(error) {
        error_msg += error.msg + '<br>'
    })
    req.flash('error', error_msg);
    res.render('signup', {
        name: req.body.name,
        email: req.body.email,
        password: req.body.password
    })
}
});

0 个答案:

没有答案