javascript - Klassvalidatorer fungerar inte när typen är en Record <k,v> - NestJS


Vi har en DTO-egenskap där dess typ är Record<string, Animal> och Animal är en annan DTO med klassvaliderare som @IsDefined(), @IsNotEmpty(). Dessa valideringar fungerar dock inte som förväntat och det beror förmodligen på att den har Record-typen.

Jag har redan försökt lägga till @ValidatedNested({ each: true }) men det fungerade fortfarande inte. Hur skulle vi kunna få valideringen att fungera för Animal dto i Record<string, Animal>?

Svar #1

Du behöver skapa en anpassad validator för detta.

Vänligen, kontrollera detta inlägg: Validera varje Map-värde med hjälp av class-validator

Svar #2

Hej Du kan försöka bygga en partial class validator, https://trilon.io/blog/introducing-mapped-types-for-nestjs här är lite dokumentation. till exempel:

export class Record extends PartialType(
  OmitType(Animal , ['legs'] as const),
) {}

Relaterade artiklar