【发布时间】:2017-08-23 18:37:42
【问题描述】:
我有一个 userSchema,首先是电子邮件、用户名和密码字段以及他们自己的验证器。 然后我想添加更多字段,例如简历、位置性别和生日,以及他们自己的验证器。
const userSchema=new Schema({
email: { type: String, required: true, unique: true, lowercase: true, validate: emailValidators},
username: { type: String, required: true, unique: true, lowercase: true, validate: usernameValidators},
password: { type: String, required: true,validate: passwordValidators},
bio: { type:String,required:false,default:null,validate:bioValidators},
location: {type:String,required:false, default:null},
gender: {type:String,required:false,default:null,validate:genderValidators},
birthday: { type:Date,required:false,default:null}
});
现在的问题是,当我想注册时,它会运行每个验证器,所以当然会发生错误,因为在注册页面中我什至没有要求提供简历、位置等..
我尝试添加 required:false 但仍然无法正常工作,我没有找到任何令人满意的答案
编辑
这是我创建新用户的方法
router.post('/register',(req,res)=>{
if (!req.body.email) {
res.json({success:false,message: 'You must provide an e-mail'});
}
else{
if (!req.body.username) {
res.json({success:false,message:'You must provide a username'});
}
else{
if(!req.body.password){
res.json({success:false,message:'You must provide a password'});
}
else{
let user= new User({
email: req.body.email.toLowerCase(),
username: req.body.username.toLowerCase(),
password: req.body.password
});
user.save((err)=>{
if (err) {
if (err.code === 11000) {
res.json({success:false,message:'Username or e-mail already exists'});
}else{
if (err.errors) {
if (err.errors.email) {
res.json({success:false, message:err.errors.email.message});
}
else{
if (err.errors.username) {
res.json({success:false,message:err.errors.username.message});
}
else{
if (err.errors.password) {
res.json({success:false,message:err.errors.password.message});
}
else{
res.json({ success:false,message:err});
}
}
}
}else{
res.json({success:false,message:'Could not save user :', err});
}
}
}
else{
res.json({success:true,message:'Account registered'})
}
});
}
}
}
});
我得到的错误是 bioValidator 和 genderValidator。
事实上我的问题是,我如何选择要执行的验证器。
【问题讨论】: