Tengo problemas para intentar validar un archivo JSON; para ser más específicos, tengo problemas con una condición de cuándo .
Tengo una clave que tiene que ser una fecha pasada y no es necesaria. Entonces tengo una clave b que debería ser una url y si a es nula/vacía, b puede estar vacía, de lo contrario debe ser requerida .
Dejaré mi código a continuación para que quede claro, pero en este momento no recibo ningún error si b es nulo pero a no lo es.
a: Joi.date().less("now").raw().optional().allow(null, ""), b: Joi.string() .uri({ scheme: [/https?/] }) .when("a", { is: Joi.any().empty(), then: Joi.optional().allow(null, ""), otherwise: Joi.required(), }),Encontré la solución, mi condición era incorrecta.
En lugar de usar is: Joi.any().empty() puse is: Joi.any().valid(null, "") y funcionó.
Así que la solución es esta:
a: Joi.date().less("now").raw().optional().allow(null, ""), b: Joi.string() .uri({ scheme: [/https?/] }) .when("a", { is: Joi.any().valid(null, ""), then: Joi.optional().allow(null, ""), otherwise: Joi.required(), }),