2 votes

Validation du joi : condition or() et xor() selon la valeur du champ

J'ai un schéma qui ressemble à ceci :

{
   a: joi.boolean(),
   b: joi.object(),
   c: joi.object()
}

Selon la valeur du champ a = false, je veux que les champs b ou c existent. Si a est faux, je veux une condition xor sur les champs b et c.

J'ai essayé d'utiliser when mais je ne parviens pas à trouver une solution parfaite.

2voto

Darshani Audhish Points 51

J'ai pu trouver une solution possible au problème. La voici.

Joi.object({
 a: Joi.boolean(),
 b: Joi.object(),
 c: Joi.object()
})
.required()
.when( Joi.object({a:false}).unknown(), {
 then: Joi.object().or('a','b'),
 otherwise: Joi.object().oxor('a','b')
})

Cela a marché pour moi.

0voto

Nicolae Maties Points 993
{
   a: Joi.boolean(),
   b: Joi.object().when('a', {
      is: false,
      then: Joi.object().required()
      otherwise: Joi.object()
   }),
   c: Joi.object().when('a', {
      is: false,
      then: Joi.object().required()
      otherwise: Joi.object()
   }),
}

Je pense que vous cherchez quelque chose comme ça. Joi.when()

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X