validate examples example custom array hapijs joi

hapijs - examples - Joi validación de matriz



joi validate file (3)

tratando de validar que una matriz tiene cero o más cadenas en un caso y que tiene cero o más objetos en otro, luchando con los documentos Joi :(

validate: { headers: Joi.object({ ''content-type'': "application/vnd.api+json", accept: "application/vnd.api+json" }).options({ allowUnknown: true }), payload : Joi.object().keys({ data : Joi.object().keys({ type: Joi.any().allow(''BY_TEMPLATE'').required(), attributes: Joi.object({ to : Joi.string().email().required(), templateId : Joi.string().required(), categories : Joi.array().items( //trying to validate here that each element is a string), variables : Joi.array({ //also trying to validate here that each element is an Object with one key and value }) }) }).required() }) }


Joi.array().items() acepta otro esquema Joi para usar contra los elementos de la matriz. Así que una serie de cadenas es así de fácil:

Joi.array().items(Joi.string())

Lo mismo para una matriz de objetos; simplemente pase un esquema de objeto a los items() :

Joi.array().items(Joi.object({ // Object schema }))


Joi.array().items(Joi.string().required(), Joi.number().required()); lo encontré here


validate: { headers: Joi.object({ ''content-type'': "application/vnd.api+json", accept: "application/vnd.api+json" }).options({ allowUnknown: true }), payload : Joi.object().keys({ data : Joi.object().keys({ type: Joi.any().allow(''BY_TEMPLATE'').required(), attributes: Joi.object({ to : Joi.string().email().required(), templateId : Joi.string().required(), categories : Joi.array().items(Joi.string()), variables : Joi.array().items(Joi.object().keys().max(1)) }) }).required() }) }