то вложенная валидация (данных в массиве) работает на всем, кроме пустого массива (внутри массива данных)
ну или подскажите =), мб я что-то не так делаю... ``` 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 все поля опциональны, поэтому пропускает
забыл сказать, валидатор на запросе с группой save @UsePipes(new ValidationPipe({ whitelist: true, forbidNonWhitelisted: true, groups: ['save'] }))
Тебя напрягает, что валидатор пропускает массив [ [ ] ]?
У тебя проверка стоит, что массив data - не пустой Массив [ [] ] уже не пустой, потому что внутри него массив есть
это да, а еще там стоит ValidateNested - и он отрабатывает на все, кроме пустого массива почему то
Мне почему то кажется, что затык в группах и они просто не отрабатывают у тебя, поэтому нест думает, что все поля необязательны для передачи в массиве Но это не точно
на пустой объект [{}] - 400
в очередной раз шокируюсь насколько класс валидатор отвратен
Обсуждают сегодня