Как правильно проверить все элементы массива в параметрах запроса даже с 1 элементом с экспресс-валидатором? - PullRequest
0 голосов
/ 19 апреля 2019

Использование express-validator версия 5.3.0.

Мне нравится новый синтаксис, и я хочу подтвердить, что параметр запроса действителен.Этот параметр может быть массивом (как в параметре repeat ).

Проблема, с которой я столкнулся, заключается в том, что, когда передается только 1 элемент, среда, похоже, просто считает его строкой и ошибкой.сообщение (я) немного громоздко.

с этой конфигурацией:

checkSchema([
{
  foo: {
    in: 'query',
    isAlphanumeric: true,
    optional: true,
    errorMessage: 'Invalid foo'
  }
}])

с URL http://server/api?foo=bar&foo=not bar Я получаю следующую ошибку:

{
  "location": "query",
  "param": "foo[1]",
  "value": "not bar",
  "msg": "Invalid foo"
}

что кажется правильным.

Однако с URL http://server/api?foo=not bar я получаю следующую ошибку:

{
  "location": "query",
  "param": "foo[3]",
  "value": " ",
  "msg": "Invalid foo"
}

Это не так уж и много, но foo[3] param - этонемного вводит в заблуждение, поскольку технически это либо foo, либо foo[0].

. Я пробовал с isArray: true, как показано ниже, но не повезло:

foo: {
    in: 'query',
    isArray: true,
    isAlphanumeric: true,
    optional: true,
    errorMessage: 'Invalid foo',
},

Но это, похоже, фактически игнорируетвторой foo параметр (потому что технически строка является массивом символов?).И с версией с одним параметром foo=no bar он показывает сообщение об ошибке дважды (я полагаю, потому что валидатор терпит неудачу как для isArray, так и для isAlphanumeric?)

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