【发布时间】:2023-03-04 01:11:01
【问题描述】:
我是 Node 新手,正在尝试进行一些用户注册表单验证。如果可能,我想重构以下代码以摆脱金字塔。我在 userService 模块中使用 Express Validator 来检查空字段和电子邮件验证,但 isValueUnique 函数只是一个 Mongoose findOne 查询。我使用 Graphics Magick 来调整图像大小。欢迎提出任何建议:
router.post('/register', function(req, res, next){
userCheck = userService.checkRegistration(req)
if(userCheck.errors){
return res.render('user/register', {
errors: userCheck.errors,
message: req.flash('error'),
title: 'People Power | Register'
})
}
User.isValueUnique({username: req.body.username}, function(err, user){
if(user){
return res.render('user/register', { message: 'Username already taken. Please choose another.', title: 'People Power | Register' });
}else{
User.isValueUnique({ email: req.body.email }, function(err, user){
if(user){
return res.render('user/register', { message: 'Email already registered. Please try again.', title: 'People Power | Register' });
} else{
User.createUser(userCheck, function(err, user){
if(err) throw err;
userService.resizeImage(userCheck, function(){
req.login(user, function(err){
req.flash('success', 'You have registered successfully, and are now logged in!')
res.redirect('/')
})
});
});
}
})
}
})
});
【问题讨论】:
标签: javascript node.js mongodb asynchronous mongoose