пользовательский запрос проверки всегда срабатывает - экспресс-валидатор - PullRequest
0 голосов
/ 08 февраля 2019

Я пытаюсь реализовать валидацию с использованием экспресс-валидатора, который должен срабатывать только в том случае, если поле действительно имеет какой-либо ввод.Если он пуст, его следует просто игнорировать.Первая часть проверки, если поле должно проверять, чтобы убедиться, что оно соответствует требованиям регулярных выражений, а вторая проверка должна видеть, существует ли значение в базе данных.Версии строчных букв одного и того же имени пользователя с заглавными буквами не допускаются, т. Е. Ширли и Ширли рассматриваются как одно и то же.

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;
                });
        }
    }),

Если я оставляю поле имени пользователя пустым, я все равно получаю ошибку проверки, сообщающую мне 'имя пользователя недоступно '

1 Ответ

0 голосов
/ 09 февраля 2019

удалось заставить его работать так:

  .custom(value => {
        if (value !== '') {
            return User.findOne({ username: new RegExp(`^${value}$`, 'i') })
                .then(userDoc => {
                    if (userDoc) {
                        return Promise.reject('Username not available');
                    } else {
                        return true;
                    }
                })
        } else {
            return true;
        }
    })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...