Я пытаюсь проверить массив объектов с помощью экспресс-валидатора.
Я использовал новый «подстановочный знак» вместе с «пользовательским» для перебора массива объектов, сравнивая ключи на объекте.
Вот проблема, допустим, мой объект выглядит так:
flavors:[
{ name: '', percentage: '0', ratio: '0' },
{ name: 'Strawberry', percentage: '2', ratio: '0' },
{ name: '', percentage: '3', ratio: '0' }
]
Как мне проверить, существует ли «имя», если «процент> 0»?
req.checkBody("flavors","Your recipe has no flavor!").notEmpty();
req.checkBody("flavors.*","Please enter a name for this flavor.").custom(function (value) {
return (!(value.percentage > 0) && !value.name);
});
Это работает, но вывод "ошибки" будет выглядеть примерно так:
{ 'flavors[2]': {
location: 'body',
param: 'flavors[2]',
msg: 'Please enter a name for this flavor.',
value: { name: '', percentage: '3', ratio: '0' }
}}
Что затрудняет отображение в моем шаблоне EJS.
Как сделать так, чтобы вывод выглядел примерно так с добавленным ключом?
{ 'flavors[2].name': {
location: 'body',
param: 'flavors[2].name',
msg: 'Please enter a name for this flavor.',
value: { name: '', percentage: '3', ratio: '0' }
}}
Надеюсь, кто-нибудь может мне помочь, спасибо! : -)