Проверка схемы Mongoose: ошибка для пустой строки при проверке необязательного поля
У меня есть схема мангуста, вроде
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: {Значение} недействительно", имя: "ValidationError"
Однако я не хочу, чтобы поле contactNum было required
,
2 ответа
Я использую модуль validator.js для npm для проверки в моей схеме mongoose, и поэтому я проверил его документацию здесь и, проведя дополнительные исследования, наконец нашел ответ.
Схема может быть обновлена, чтобы не проверять для 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"
}
}
Вам нужно обновить свой 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.');