5
votes

Validation sur paramètre facultatif à l'aide du validateur de classe dans nestjs?

Je veux appliquer la validation sur la charge utile de la demande, par exemple, il y a un nom de champ avec un type de chaîne. Mais le nom n'est pas un champ obligatoire mais s'il existe il doit exécuter @IsNotEmpty()

J'ai essayé quelque chose comme ça @IsNotEmpty () name?: string // il ne tient pas compte de la contrainte optionnelle ?


0 commentaires

3 Réponses :


8
votes

Vous pouvez utiliser le validateur @IsOptional () :

Vérifie si la valeur donnée est vide ( === null , === undefined ) et si oui, ignore tous les validateurs de la propriété.


0 commentaires

0
votes

La réponse de Kim est excellente. Si vous souhaitez appliquer ce comportement à tous vos champs facultatifs, vous pouvez également utiliser skipMissingProperties: true avec votre ou vos canaux de validation.


0 commentaires

1
votes

class-validator a un validateur @IsOptional () que vous pouvez ajouter avec tout autre validateur que vous avez défini comme ceci:

@IsOptional() @IsNotEmpty() name: string;

Les décorateurs sont commutatifs donc la validation ne dépend pas de l'ordre des validateurs. Si la nécessité de valider dépend de quelque chose d'autre que la présence, vous pouvez utiliser @ValidateIf () qui prend un argument de fonction.


0 commentaires