Я пытаюсь проверить наличие необязательного поля в запросе API, и если это поле существует, выполнить вложенную проверку, чтобы проверить, существуют ли внутри него два других поля (одно или другое или неявно оба). Я использую Express Validator, чтобы попытаться выполнить эту задачу.
// Sample request body
{
<...>
thresholds: {
min: 3,
max: 5
}
}
// (Attempted) validation chain
check('thresholds').optional()
.custom( innerBody => {
console.log('THRESHOLDS', innerBody);
oneOf([
check('innerBody.min').optional(),
check('innerBody.max').optional()
]);
})
Приведенный выше фрагмент является частью более крупной цепочки проверки, в которой я проверяю полное тело запроса. Я также попытался удалить строку innerBody.
из внутренних check
, но все равно не повезло. Я console.log
печатаю тело порога, и оно распечатывается правильно, однако я все равно получаю сообщение об ошибке проверки, когда пытаюсь пройти тест интеграции:
{"name":"ValidationError","message":"ValidationError: Validation failed","errors":[{"location":"body","param":"thresholds","value":{"min":3,"max":5},"msg":"Invalid value"}]}
Я относительно новичок в Express Validator, поэтому, если я неправильно связываю валидацию / не использую oneOf
правильно, или что-то будет любить некоторые указатели!
Спасибо