Nâng CaoNestJS iconNestJS

Request validation với nested DTOs, arrays và conditional validation?

Nested DTOs với @ValidateNested()@Type():

typescript
import { ValidateNested, IsArray, ArrayMinSize } from 'class-validator';
import { Type } from 'class-transformer';

class AddressDto {
  @IsString() @Length(2, 100)
  street: string;

  @IsString() @IsPostalCode('VN')
  zipCode: string;
}

class CreateUserDto {
  @IsString() @MinLength(2)
  name: string;

  @ValidateNested()    // Validate nested object
  @Type(() => AddressDto)  // Phải có @Type để transform
  address: AddressDto;

  @IsArray()
  @ArrayMinSize(1)
  @ValidateNested({ each: true })  // Validate từng item
  @Type(() => AddressDto)
  addresses: AddressDto[];
}

Conditional validation với @ValidateIf():

typescript
@IsOptional()
paymentMethod?: string;

@ValidateIf(obj => obj.paymentMethod === 'CREDIT_CARD')
@IsCreditCard()
cardNumber?: string;  // Chỉ validate nếu paymentMethod là CREDIT_CARD

Pitfall: @Type(() => NestedClass) là bắt buộc cho @ValidateNested() — thiếu thì validation bỏ qua nested object.

Xem toàn bộ NestJS cùng filter theo level & chủ đề con.

Mở danh sách NestJS