在我的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
})
}
});