77 votes

Validation Joi du tableau

essayer de valider qu'un tableau a zéro ou plusieurs chaînes dans un cas et qu'il a zéro ou plusieurs objets dans un autre, du mal avec les documents 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()
        })
    }
 

197voto

cdhowie Points 62253

Joi.array().items() accepte un autre schéma Joi à utiliser contre les éléments du tableau. Un tableau de chaînes est donc aussi simple:

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

Idem pour un tableau d'objets; passez simplement un schéma d'objet à items() :

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

1voto

Vitaliy Sobol Points 16

Joi.array().items(Joi.string().required(), Joi.number().required()); trouvé ici

-1voto

1977 Points 505
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()
        })
    }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X