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 ?
3 Réponses :
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é.
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.
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.