Проверка с помощью экспресс-валидатора .equals () - PullRequest
0 голосов
/ 10 апреля 2019

Я пытаюсь проверить запрос к конечной точке, используя экспресс-валидатор .equals (), чтобы проверить, равен ли ввод пользовательского типа 'сбережению' или 'текущему'.Но метод equals () выбирает только первое значение.

Я пробовал использовать ||выписка

 const creatAccount = [

    check('type').not().isEmpty().withMessage('Please specify account type'),

    check('type').equals('savings' || 'current').withMessage('Invalid Account Type: Account Type can be either "savings" or "current"'),

    check('initialDeposit').not().isEmpty().withMessage('specify a Initial Deposit'),

    (req, res, next) => {

      const errors = validationResult(req);

      const errMessages = [];

      if (!errors.isEmpty()) {

        errors.array().forEach((err) => {

          errMessages.push(err.msg);

        });
        return res.status(401).json({
          status: 401,
          error: errMessages,
        });
      }
      return next();
    },
  ]

1 Ответ

2 голосов
/ 10 апреля 2019

Это потому, что

'savings' || 'current'

сначала разрешается (как 'savings') и передается в качестве параметра .equals().Узнайте больше о том, как это решено ||оператор .

Существует несколько вариантов:

const message = 'Invalid Account Type: Account Type can be either "savings" or "current"';
check('type').equals('savings').withMessage(message);
check('type').equals('current').withMessage(message);

, кроме того, вы можете переместить это в функцию

const validateType = type => {
   const message = 'Invalid Account Type: Account Type can be either "savings" or "current"';
   check('type').equals(type).withMessage(message);
}
validateType('savings');
validateType('current');

Рекомендуетсяопция

Использование oneOf

const { check, oneOf } = require('express-validator/check');
const message = 'Invalid Account Type: Account Type can be either "savings" or "current"';
const creatAccount = [

    check('type').not().isEmpty().withMessage('Please specify account type'),

    oneOf([
       check('type').equals('savings'),
       check('type').equals('current'),
     ], message),

    check('initialDeposit').not().isEmpty().withMessage('specify a Initial Deposit'),

    (req, res, next) => {

      const errors = validationResult(req);

      const errMessages = [];

      if (!errors.isEmpty()) {

        errors.array().forEach((err) => {

          errMessages.push(err.msg);

        });
        return res.status(401).json({
          status: 401,
          error: errMessages,
        });
      }
      return next();
    },
  ]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...