[英]How to define non-required field in Mongoose schema with nested "type" property?
[英]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字段驗證為“手機號碼”,但是當我將聯系人號碼字段留空時出現以下錯誤-
消息:“員工驗證失敗:contactNum:{Value}無效”,名稱:“ ValidationError”
但是,我不希望contactNum字段為required
字段。
您需要將您的validateator.isMobilePhone()更新為接受空值或空值。 然后像這樣更改您的架構
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.');
我在貓鼬模式中使用npm的validatorator.js模塊進行驗證,因此我在這里查看了它的文檔,並通過進一步的研究終於找到了答案。
如果值為空,則可以更新該架構以不驗證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"
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.