Skip to content

Instantly share code, notes, and snippets.

@marcusholloway17
Created March 30, 2024 11:06
Show Gist options
  • Select an option

  • Save marcusholloway17/68629c042dfec43055156670ae8140a5 to your computer and use it in GitHub Desktop.

Select an option

Save marcusholloway17/68629c042dfec43055156670ae8140a5 to your computer and use it in GitHub Desktop.
Implementer la validation requireIf avec express-validator

requiredIf est une condition de validation avec express-validator qui permet de rendre un champ obligatoire seulement si une certaine condition est remplie. Cependant, express-validator n'inclut pas une règle requiredIf prédéfinie directement comme dans certains frameworks de validation. Néanmoins, tu peux implémenter cette logique en utilisant les fonctionnalités personnalisées de validation qu'express-validator offre.

Voici comment tu pourrais implémenter une validation requiredIf :

1. Utiliser une Validation Conditionnelle :

Tu peux créer une condition qui vérifie si un autre champ répond à certains critères et, basé sur cela, appliquer la validation requise sur le champ en question.

2. Utiliser .custom() pour les validations personnalisées :

.custom() te permet de définir une fonction de validation où tu peux mettre en place n'importe quelle logique. Supposons que tu veuilles rendre le champ monChamp requis si un autre champ conditionChamp est égal à une certaine valeur. Voici comment tu pourrais faire :

const { body } = require('express-validator');

app.post('/mon-route',
  [
    // Validation pour 'monChamp' si 'conditionChamp' est égal à 'certaineValeur'
    body('monChamp').custom((value, { req }) => {
      if (req.body.conditionChamp === 'certaineValeur' && !value) {
        throw new Error('monChamp est requis lorsque conditionChamp est certaineValeur');
      }
      // Indique la validation réussie sans erreur
      return true;
    })
  ],
  (req, res) => {
    // Gérer la requête ici
  }
);

Dans cet exemple, monChamp devient obligatoire seulement si conditionChamp est égal à certaineValeur. La méthode .custom() te permet de mettre en place une logique de validation complexe et de lancer une erreur si la validation échoue. C'est une approche flexible pour gérer des conditions de validation basées sur les relations entre différents champs de formulaire dans une application Express.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment