Проверьте два поля с помощью специальных валидаторов экспресс-валидатора - PullRequest
0 голосов
/ 15 ноября 2018

У меня есть два поля: логин и пароль. Я использую специальные валидаторы для проверки:

login: {
  isNotNull: { errorMessage: 'Required field' },
  isServiceUser: {
    errorMessage: 'Failed to login',
    options: req.body.password,
  },
},
password: {
  isNotEmpty: { errorMessage: 'Required field' },
}

isServiceUser проверяет, отправляя http-запрос другому сервису. Как я могу проверить их оба сразу и отправить клиенту, что оба поля недействительны?

1 Ответ

0 голосов
/ 03 апреля 2019

Вы можете использовать пользовательскую проверку.

Предположим, вы хотите проверить пароль, если он существует, и имя пользователя:

const { check, validationResult } = require('express-validator/check')
app.post(upload.single('customerImage'),[
check('name').custom(async (name, {req}) => {
                // api request for fetching user name
                const res = await getCust(name) 
                // change if condition to make it do what you want
                if(!res && req.body.password === ""){
                     throw new Error('user name or password invalid')
                }
                })], (req, res) => { 
                       const errors = validationResult(req)
                       if(!errors.isEmpty()){
                           return res.status(442).json({ errors: errors.array() })
                       }
                       //do something
                })

Вы должны изменить условие проверки по своему усмотрению.

Если вы хотите использовать Проверка схемы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...