Tengo un caso de uso en el que un campo de esquema es obligatorio según el valor de otro campo,
p.ej. Si el esquema tiene 2 campos, nombre y dirección,
si el valor del campo de nombre es "prueba", solo se requiere el campo de dirección.
Estoy usando Joi para la validación de objetos,
El siguiente es mi código de muestra:
const Joi = require('joi'); let test = async() => { const schema = Joi.object({ name: Joi.string().required(), addr: Joi.alternatives().conditional('name', {is: 'test', then: Joi.string().required()}) }); const request = { name: "test" } // schema options const options = { abortEarly: false, // include all errors allowUnknown: true, // ignore unknown props stripUnknown: true // remove unknown props }; // validate request body against schema const validationResponse = await schema.validate(request, options); console.log("validationResponse => ", validationResponse); return true; }; test(); salida actual - validationResponse => { value: { name: 'test' } }
lo que espero es que la respuesta de validación tenga un mensaje de error de que falta el campo addr.
Traté de referirme -
https://www.npmjs.com/package/joi
https://joi.dev/api/?v=17.4.2#alternativesconditionalcondition-options