Использование 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
?)