猫鼬模式验证:验证非必需字段时出现空字符串错误
Mongoose schema validation: Error for empty string when validating a non-required field
我有一个猫鼬模式,比如,
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 字段是否为 'mobile phone number',但出现以下错误 当我将联系电话字段留空时 -
message: "Employee validation failed: contactNum: {Value} is not
valid", name: "ValidationError"
但是,我不希望 contactNum 字段是 required
。
您需要将 validator.isMobilePhone() 更新为接受 null 或空值。
并像这样更改您的架构
contactNum: {
type: String,
required:false,
validate: {
validator: validator.isMobilePhone,
message: "{Value} is not valid"
}
}
通过将 required 设置为 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.');
我在我的 mongoose 模式中使用 npm 的 validator.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"
}
}
我有一个猫鼬模式,比如,
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 字段是否为 'mobile phone number',但出现以下错误 当我将联系电话字段留空时 -
message: "Employee validation failed: contactNum: {Value} is not valid", name: "ValidationError"
但是,我不希望 contactNum 字段是 required
。
您需要将 validator.isMobilePhone() 更新为接受 null 或空值。 并像这样更改您的架构
contactNum: {
type: String,
required:false,
validate: {
validator: validator.isMobilePhone,
message: "{Value} is not valid"
}
}
通过将 required 设置为 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.');
我在我的 mongoose 模式中使用 npm 的 validator.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"
}
}