Я пытаюсь реализовать валидацию с использованием экспресс-валидатора, который должен срабатывать только в том случае, если поле действительно имеет какой-либо ввод.Если он пуст, его следует просто игнорировать.Первая часть проверки, если поле должно проверять, чтобы убедиться, что оно соответствует требованиям регулярных выражений, а вторая проверка должна видеть, существует ли значение в базе данных.Версии строчных букв одного и того же имени пользователя с заглавными буквами не допускаются, т. Е. Ширли и Ширли рассматриваются как одно и то же.
body('username')
.trim()
.custom((value, { req }) => {
var regex = /^[a-zA-Z0-9]{5,20}$/;
if (value != '' && !value.match(regex)) {
throw new Error('Username does not meet required criteria.');
}
return true;
})
.custom((value, { req }) => {
if (value !== '') {
return User.findOne({ username: new RegExp(`^${value}$`, 'i') })
.then(userDoc => {
if (userDoc) {
return Promise.reject('Username unavailable');
}
return true;
});
}
}),
Если я оставляю поле имени пользователя пустым, я все равно получаю ошибку проверки, сообщающую мне 'имя пользователя недоступно '