How to validate array of objects using Joi? How to validate array of objects using Joi? express express

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);