209 похожих чатов

А есть способ подебажить процесс валидации посредством class-validator`а? у меня почему

то вложенная валидация (данных в массиве) работает на всем, кроме пустого массива (внутри массива данных)

10 ответов

4 просмотра
Кирилл-Глазунов Автор вопроса

ну или подскажите =), мб я что-то не так делаю... ``` import { IsOptional, IsNumber, ArrayNotEmpty, ValidateNested, IsBoolean } from 'class-validator'; import { Type } from 'class-transformer'; export class OneDTO { @IsOptional({ groups: ['save'] }) @IsNumber({}, { always: true }) id?: number; @IsOptional({ groups: ['get', 'remove'] }) @ArrayNotEmpty({ always: true }) @Type(() => TwoDTO) @ValidateNested({ always: true, each: true }) data!: TwoDTO[]; } class TwoDTO { @IsOptional({ groups: ['get', 'remove'] }) @IsNumber({}, { always: true }) id!: number; @IsOptional({ groups: ['get', 'remove'] }) @IsNumber({}, { always: true }) amount!: number; @IsOptional({ always: true }) @IsNumber({}, { always: true }) capacityId?: number; @IsOptional({ always: true }) @IsNumber({}, { always: true }) unitId?: number; @IsOptional({ groups: ['get', 'remove'] }) @IsBoolean({ always: true }) zeroWeight!: boolean; } ``` если кидаю в поле data значения [1], [true], [{}] - валится 400, но если [[]] - валидатор пропускает запрос валидатор на ручке с группой save @UsePipes(new ValidationPipe({ whitelist: true, forbidNonWhitelisted: true, groups: ['save'] }))

Кирилл Глазунов
ну или подскажите =), мб я что-то не так делаю... ...

У тебя в классе twodto все поля опциональны, поэтому пропускает

Кирилл-Глазунов Автор вопроса
Puertoricanec
У тебя в классе twodto все поля опциональны, поэто...

забыл сказать, валидатор на запросе с группой save @UsePipes(new ValidationPipe({ whitelist: true, forbidNonWhitelisted: true, groups: ['save'] }))

Кирилл Глазунов
забыл сказать, валидатор на запросе с группой save...

Тебя напрягает, что валидатор пропускает массив [ [ ] ]?

Кирилл Глазунов
да, не должен

У тебя проверка стоит, что массив data - не пустой Массив [ [] ] уже не пустой, потому что внутри него массив есть

Кирилл-Глазунов Автор вопроса
Puertoricanec
У тебя проверка стоит, что массив data - не пусто...

это да, а еще там стоит ValidateNested - и он отрабатывает на все, кроме пустого массива почему то

Кирилл Глазунов
это да, а еще там стоит ValidateNested - и он отра...

Мне почему то кажется, что затык в группах и они просто не отрабатывают у тебя, поэтому нест думает, что все поля необязательны для передачи в массиве Но это не точно

Кирилл-Глазунов Автор вопроса
Кирилл Глазунов
ну или подскажите =), мб я что-то не так делаю... ...

в очередной раз шокируюсь насколько класс валидатор отвратен

Похожие вопросы

Обсуждают сегодня

Карта сайта