array
Validates the property to be an array. Further you can define the shape of the array elements using the array.members()
method.
In the following example, the tags
property accepts an array of numbers.
import { schema } from '@ioc:Adonis/Core/Validator'
{
tags: schema.array().members(schema.number())
}
// Valid data: [1, 3, 8, 11, 22]
Following is an example of accepting an array of objects with username
and the email
properties.
{
users: schema.array().members(
schema.object().members({
username: schema.string(),
email: schema.string(),
})
),
}
// Valid data: [{ username: 'virk', email: 'virk@adonisjs.com' }]
Mark as optional
You can mark the property to be optional by chaining the optional
method. The undefined
and the null
values are considered optional and removed from the validated object.
{
tags: schema.array
.optional([// 👈
rules.minLength(1)
])
.members(schema.number())
}
Mark as nullable
You can mark the property to be nullable by chaining the nullable
method. The nullable
fields must exist in the payload but can contain null values.
{
tags: schema.array
.nullable([// 👈
rules.minLength(1)
])
.members(schema.number())
}
Mark as nullable and optional
Mark the property both as nullable
and optional
. If the field value is undefined, it will be removed from the validated object. Otherwise, the validated value (including null) is returned.
{
tags: schema.array
.nullableAndOptional([// 👈
rules.minLength(1)
])
.members(schema.number())
}
Validating array length
You can validate the array length by using the minLength
and the maxLength
rules. In the following example, we accept a minimum of 1 and a maximum of 5 tags.
{
tags: schema
.array([
rules.minLength(1),
rules.maxLength(5)
])
.members(schema.number()),
}
Accept any elements
You can also define an array that accepts any elements. The array elements are not further validated to have a specific type.
{
themeOptions: schema.array().anyMembers()
}