Digamos que tengo el siguiente esquema
const schema = Joi.object({ title: Joi.string().required(), start_date: Joi.date().iso().required(), end_date: Joi.date().iso().greater(Joi.ref('start_date')).required() });En una ocasión me gustaría validar todo el esquema contra un objeto
const obj = { title: 'abc', start_date: '2021-11-09', end_date: '2021-11-10' } const validationResult = schema.validate(obj);Y por el otro, me gustaría validar contra parte del esquema con mi objeto parcial (no quiero alarmarme por la falta de un título, por ejemplo)
const obj = { start_date: '2021-11-09', end_date: '2021-11-11' } const validationResult = schema/*sudo*/.onlyFields(['start_date', 'end_date']).validate(obj);¿Es posible? La solución es tener 2 esquemas: titleSchema y dateSchema y concatinating
Resuelto usando la api schema.extract
function joiSubSchema(base, fields) { return fields.reduce((schema, field) => { return schema.concat(Joi.object({ [field]: base.extract(field) })); }, Joi.object()); }