Joi validation of array

Joi.array().items() accepts another Joi schema to use against the array elements. So an array of strings is this easy:

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

Same for an array of objects; just pass an object schema to items():

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

If you want to validate an array of strings in Joi:

Joi.array().items(Joi.string().valid("item1", "item2", "item3", "item4"))


you can try this:

function(data) {
 const Schema = {
   categories: Joi.array().items(Joi.string()),
   variables: Joi.array().items(Joi.object().keys().min(1))
 }
 return Joi.validate(data, Schema)
}

for more details checkout this repo: https://github.com/raysk4ever/nodejs_withMongoRefArray


You can also try this way, I have been using it for long time and working fine for me.

If your array is array of objects than use below:

const Joi = require('joi');

let schema = Joi.object().keys({
            items: Joi.array().items(
                Joi.object({
                    item_id: Joi.number().required(),
                    item_qty: Joi.number().required(),
                    item_type_id: Joi.number().required(),
                    item_qty: Joi.number().required(),
                    base_price: Joi.number().required(),
                    actual_price: Joi.number().required(),
                })
            ).required(),
        });

        let errors = Joi.validate(req.body, schema);

if you array is simple array than:

let schema = Joi.object().keys({
                items: Joi.array().items(
                Joi.number().required()
            ).min(10).required(),
            });

Joi.array().items(Joi.string().required(), Joi.number().required()); found it here