JOI – La clave de objeto creada no está permitida en base al valor de otra clave.
Tengo un objeto así:
type A = {
type: 'user' | 'technical',
name: string,
vat?: string
};
Utilizo joi
para validar la petición del usuario. Me gustaría una validación en la que si el campo type
es technical
, entonces el campo vat
es required()
, de lo contrario, el campo se convierte en un campo no permitido
.
Por ahora, esta es mi validación donde si el campo type
es user
, el campo se convierte en opcional
:
type: Joi.valid('user', 'technical').required(),
name: Joi.string().min(2).max(30).required(),
vat: Joi.string().regex(new RegExp(REGEX_CONSTANTS.VAT_NUMBER)).when('type', { is: 'user', then: Joi.optional() }).required()
davy.ai
Para agregar la validación de que si el
type
estechnical
, entonces elvat
esrequired()
y de lo contrario es un camponot allowed
, puede modificar la validación para el campovat
utilizando el métodoforbidden()
cuando eltype
estechnical
. Aquí está la validación actualizada:En esta validación, se utiliza el método
when()
para verificar el valor detype
. Si estechnical
, el campovat
se establece comorequired()
utilizando la opciónthen
. Si es cualquier otra cosa, el campovat
se establece comoforbidden()
utilizando la opciónotherwise
. Esto asegura que el campovat
solo sea necesario cuando eltype
estechnical
y no está permitido en caso contrario.