How to validate array of objects using Joi?
replacing ordered with items will work.
let Joi = require('joi')let service = Joi.object().keys({ serviceName: Joi.string().required(),})let services = Joi.array().items(service)let test = Joi.validate( [{ serviceName: 'service1' }, { serviceName: 'service2' }], services,)
For reference click here
A basic/ clearer example is as follows.To validate a JSON request like this:
{ "data": [ { "keyword":"test", "country_code":"de", "language":"de", "depth":1 } ] }
Here is the Joi validation:
seoPostBody: { body: { data: Joi.array() .items({ keyword: Joi.string() .required(), country_code: Joi.string() .required(), language: Joi.string() .required(), depth: Joi.number() .required(), }), }, };
This is what I am doing in NodeJs, might need some slight changes for other platforms
Just want to make it more clear. I'm currently using "@hapi/joi:16.1.7".
Let's say you want your schema to validate this array of objects.
const example = [ { "foo": "bar", "num": 1, "is_active": true, }];
Then schema's rules should be:
var validator = require('@hapi/joi');const rules = validator.array().items( validator.object( foo: validator.string().required(), num: validator.number().required(), is_active: validator.boolean().required(), ),);const { error } = rules.validate(example);