const schema = { a: Joi.any(), b: Joi .boolean() .default(false), c: Joi .boolean() .default(false) }¿Cómo puedo arreglar el esquema Joi mencionado anteriormente para que coincida con las siguientes reglas?
b o c puede ser true al mismo tiempob o c es true , a está forbidden ; de lo contrario a se required a.Joi.object( { a: Joi .boolean() .default(false), b: Joi .boolean() .default(false), c: Joi.string().when( 'a', { is: false, then: Joi.when( 'b', { is: false, then: Joi.string().required() } ) } ), }) Intenté anidar when antes de hacer la pregunta, pero no funcionó antes debido al orden de las reglas
Joi.object( { c: Joi.string().when( 'a', { is: false, then: Joi.when( 'b', { is: false, then: Joi.string().required() } ) } ), a: Joi .boolean() .default(false), b: Joi .boolean() .default(false), }) el valor default en el segundo esquema no se establece cuando se verifica el when , por lo que si valida un objeto vacío {} , el primer esquema tiene un Validation Error: "c" is required mientras que el segundo Passed con {a: false, b: false}
Abrí un problema aquí https://github.com/sideway/joi/issues/2683