Tengo una función que devuelve un esquema Joi. La cadena en ese esquema puede ser obligatoria u opcional.
Aquí está mi función:
function myString(required) { const schema = Joi.string(); if (required) schema.required(); return schema; } Llamar myString(true) no aplica .required() . Sin embargo, la cadena es necesaria si mi función se define como:
function myString() { const schema = Joi.string().required(); return schema; } Quería una función para aplicar ese .required() condicional (y otras validaciones) para no perder el tiempo escribiendo Joi.string() o Joi.string().required() todas partes. Entonces, lo siguiente no se ajusta a mi necesidad:
function myString(required) { return required ? Joi.string().required() : Joi.string(); }¿Por qué mi primera función no funciona? ¿Cómo puedo hacer que funcione?
La función joi devuelve this instancia, necesita almacenarla en la variable. es builder
function myString(required) { let schema = Joi.string(); if (required) { schema = schema.required(); } return schema; }