我有一个猫鼬的模式,
let Employee = new mongoose.Schema({
name: {
type: String,
required: true
},
email: {
type: String,
required: true,
trim: true,
unique: true,
validate: {
validator: validator.isEmail,
message: "{Value} is not valid"
}
},
contactNum: {
type: String,
validate: {
validator: validator.isMobilePhone,
message: "{Value} is not valid"
}
},
salary: {
type: String
}
});
我正在验证contactNum字段是否为“手机号码”,但发生以下错误当我将联系人号码字段留空-
消息:“员工验证失败:contactNum:{Value}不是 有效”,名称:“ ValidationError”
但是,我不希望contactNum字段为required
。
答案 0 :(得分:0)
您需要将validator.isMobilePhone()更新为接受空值或空值。 并像这样更改您的架构
contactNum: {
type: String,
required:false,
validate: {
validator: validator.isMobilePhone,
message: "{Value} is not valid"
}
}
通过将必选设置设置为false,可以实现所需的功能。
像这样更改您的验证器js函数
Validator.isMobilePhone('telephone', function(value, requirement, attribute) { // requirement parameter defaults to null
if(value.toString()==""){return true;}
return value.match(/^\d{3}-\d{3}-\d{4}$/);
}, 'The :attribute phone number is not in the format XXX-XXX-XXXX.');
答案 1 :(得分:0)
我在猫鼬模式中使用npm的validatorator.js模块进行验证,因此我检查了它的文档here,并通过进一步的研究终于找到了答案。
可以将模式更新为如果值为空,则不验证mobile phone number
,例如-
contactNum: {
type: String,
required: false,
validate: {
validator: (value) => {
// Check if value is empty then return true.
if (value === "") {
return true;
}
// If value is empty will not validate for mobile phone.
return validator.isMobilePhone(value);
},
message: "{VALUE} is not valid"
}
}