[英]Express.js + Sequelize + Form validation
我正在开发我的第一个Express + Sequelize应用程序,并且希望使用Sequelize的验证机制来验证提交的表单,而不必在前端重新实现所有验证(或使用其他验证库,例如express-validator等)。 因此,基本上,我想执行以下操作:
var signup = function(req, res) {
res.render('signup', { title: 'Sign-up' });
}
router.get('/signup', signup);
router.post('/signup', function(req, res) {
User.create({
email: req.body.email,
...
}).then(function(user) {
req.flash('info', 'User created successfully.');
res.redirect('/login');
}).catch(function(err) {
// [1] Bring sequelize's error messages into a suitable form somehow
if (req.xhr) {
res.json(err);
}
else {
// [2] Fallback for non-JS browsers
req.flash('error', err);
signup(req, res);
}
});
});
非常感谢!
我建议您将验证逻辑与“数据库”逻辑分开。 它使您可以更明确地显示验证错误并降低复杂度。
将所有逻辑移动到单独的文件router.post('/signup' create)
create(req, res, next){
createForm.validate(req)
.then(()=>{
return createForm.create(req);
})
.then((createdUser) => {
req.flash('info', 'User created successfully.');
res.redirect('/login');
})
.catch((error)=> {
if(error instanceof ValidationError) {
req.flash('error', error);
return signup(req, res);
}
next(error); //go to handle of unexpected error
});
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.