Skip to content

Interface: ArraySchema<TSchema> ​

Schema type for array validation.

Extends ​

Type Parameters ​

Type ParameterDefault type
TSchemaany[]

Properties ​

PropertyModifierTypeDescriptionInherited from
_flagspublicRecord<string, any>Flags of current schema.AnySchema._flags
~standardreadonlyProps<TSchema, TSchema>The Standard Schema properties.AnySchema.~standard
$publicArraySchema<TSchema>Starts a ruleset in order to apply multiple rule options. The set ends when rule(), keep(), message(), or warn() is called.AnySchema.$
$_knexpublicany-AnySchema.$_knex
$_superpublicSchemaParent schema object.AnySchema.$_super
$_termspublicRecord<string, any>Terms of current schema.SchemaInternals.$_terms
rulesetpublicArraySchema<TSchema>Starts a ruleset in order to apply multiple rule options. The set ends when rule(), keep(), message(), or warn() is called.AnySchema.ruleset
type?publicstring-AnySchema.type

Methods ​

$_addRule() ​

ts
$_addRule(rule: string | AddRuleOptions): Schema;

Adds a rule to current validation schema.

Parameters ​

ParameterType
rulestring | AddRuleOptions

Returns ​

Schema

Inherited from ​

AnySchema.$_addRule


$_compile() ​

ts
$_compile(schema: SchemaLike, options?: CompileOptions): Schema;

Internally compiles schema.

Parameters ​

ParameterType
schemaSchemaLike
options?CompileOptions

Returns ​

Schema

Inherited from ​

AnySchema.$_compile


$_createError() ​

ts
$_createError(
   code: string,
   value: any,
   context: ValidationContext,
   state: State,
   prefs: ValidationOptions,
   options?: CreateErrorOptions): Err;

Creates a joi error object.

Parameters ​

ParameterType
codestring
valueany
contextValidationContext
stateState
prefsValidationOptions
options?CreateErrorOptions

Returns ​

Err

Inherited from ​

SchemaInternals.$_createError


$_getFlag() ​

ts
$_getFlag(name: string): any;

Get value from given flag.

Parameters ​

ParameterType
namestring

Returns ​

any

Inherited from ​

SchemaInternals.$_getFlag


$_getRule() ​

ts
$_getRule(name: string): GetRuleOptions | undefined;

Retrieve some rule configuration.

Parameters ​

ParameterType
namestring

Returns ​

GetRuleOptions | undefined

Inherited from ​

AnySchema.$_getRule


$_mapLabels() ​

ts
$_mapLabels(path: string | string[]): string;

Parameters ​

ParameterType
pathstring | string[]

Returns ​

string

Inherited from ​

AnySchema.$_mapLabels


$_match() ​

ts
$_match(
   value: any,
   state: State,
   prefs: ValidationOptions): boolean;

Returns true if validations runs fine on given value.

Parameters ​

ParameterType
valueany
stateState
prefsValidationOptions

Returns ​

boolean

Inherited from ​

SchemaInternals.$_match


$_modify() ​

ts
$_modify(options?: ModifyOptions): Schema;

Parameters ​

ParameterType
options?ModifyOptions

Returns ​

Schema

Inherited from ​

AnySchema.$_modify


$_mutateRebuild() ​

ts
$_mutateRebuild(): this;

Resets current schema.

Returns ​

this

Inherited from ​

AnySchema.$_mutateRebuild


$_mutateRegister() ​

ts
$_mutateRegister(schema: Schema_2, options?: MutateRegisterOptions): void;

Parameters ​

ParameterType
schemaSchema_2
options?MutateRegisterOptions

Returns ​

void

Inherited from ​

SchemaInternals.$_mutateRegister


$_property() ​

ts
$_property(name: string): any;

Get value from given property.

Parameters ​

ParameterType
namestring

Returns ​

any

Inherited from ​

SchemaInternals.$_property


$_reach() ​

ts
$_reach(path: string[]): Schema;

Get schema at given path.

Parameters ​

ParameterType
pathstring[]

Returns ​

Schema

Inherited from ​

AnySchema.$_reach


$_rootReferences() ​

ts
$_rootReferences(): any;

Get current schema root references.

Returns ​

any

Inherited from ​

SchemaInternals.$_rootReferences


$_setFlag() ​

ts
$_setFlag(
   flag: string,
   value: any,
   options?: SetFlagOptions): void;

Set flag to given value.

Parameters ​

ParameterType
flagstring
valueany
options?SetFlagOptions

Returns ​

void

Inherited from ​

SchemaInternals.$_setFlag


$_validate() ​

ts
$_validate(
   value: any,
   state: State,
   prefs: ValidationOptions): ValidationResult;

Runs internal validations against given value.

Parameters ​

ParameterType
valueany
stateState
prefsValidationOptions

Returns ​

ValidationResult

Inherited from ​

SchemaInternals.$_validate


allow() ​

ts
allow(...values: any[]): this;

Parameters ​

ParameterType
...valuesany[]

Returns ​

this

Inherited from ​

AnySchema.allow


alter() ​

ts
alter(targets: Record<string, (schema: this) => Schema>): this;

Parameters ​

ParameterType
targetsRecord<string, (schema: this) => Schema>

Returns ​

this

Inherited from ​

AnySchema.alter


artifact() ​

ts
artifact(id: any): this;

Parameters ​

ParameterType
idany

Returns ​

this

Inherited from ​

AnySchema.artifact


bind() ​

ts
bind(): this;

Returns ​

this

Inherited from ​

AnySchema.bind


cache() ​

ts
cache(cache?: Cache): this;

Parameters ​

ParameterType
cache?Cache

Returns ​

this

Inherited from ​

AnySchema.cache


cast() ​

ts
cast(to: "string" | "number" | "object" | "set" | "map"): this;

Parameters ​

ParameterType
to"string" | "number" | "object" | "set" | "map"

Returns ​

this

Inherited from ​

AnySchema.cast


concat() ​

ts
concat(schema: this): this;

Parameters ​

ParameterType
schemathis

Returns ​

this

Inherited from ​

AnySchema.concat


custom() ​

ts
custom(fn: CustomValidator, description?: string): this;

Parameters ​

ParameterType
fnCustomValidator
description?string

Returns ​

this

Inherited from ​

AnySchema.custom


db() ​

ts
db(connection: any): this;

Alias for .knex(). Sets the database connection for database validation rules.

Parameters ​

ParameterTypeDescription
connectionanyA Knex instance, transaction, or connection configuration

Returns ​

this

Inherited from ​

AnySchema.db


default() ​

ts
default(value?: DefaultableValue): this;

Sets a default value if the original value is undefined.

Parameters ​

ParameterTypeDescription
value?DefaultableValueThe default value. Can be: - A literal array value - A reference to another schema value - A function that returns the default value with signature (parent, helpers) => value - parent - A clone of the object containing the value being validated - helpers - Validation helper functions for custom validation logic

Returns ​

this

Overrides ​

AnySchema.default


describe() ​

ts
describe(): Description;

Returns a plain object representing the schema's rules and properties

Returns ​

Description

Inherited from ​

AnySchema.describe


description() ​

ts
description(desc: string): this;

Parameters ​

ParameterType
descstring

Returns ​

this

Inherited from ​

AnySchema.description


disallow() ​

ts
disallow(...values: any[]): this;

Parameters ​

ParameterType
...valuesany[]

Returns ​

this

Inherited from ​

AnySchema.disallow


empty() ​

ts
empty(schema?: SchemaLike): this;

Parameters ​

ParameterType
schema?SchemaLike

Returns ​

this

Inherited from ​

AnySchema.empty


equal() ​

ts
equal(...values: any[]): this;

Parameters ​

ParameterType
...valuesany[]

Returns ​

this

Inherited from ​

AnySchema.equal


error() ​

ts
error(err:
  | Error
  | ValidationErrorFunction): this;

Parameters ​

ParameterType
err| Error | ValidationErrorFunction

Returns ​

this

Inherited from ​

AnySchema.error


example() ​

ts
example(value: any, options?: {
  override: boolean;
}): this;

Parameters ​

ParameterType
valueany
options?{ override: boolean; }
options.override?boolean

Returns ​

this

Inherited from ​

AnySchema.example


exist() ​

ts
exist(): this;

Returns ​

this

Inherited from ​

AnySchema.exist


existsInDb() ​

ts
existsInDb(
   table: string | Reference,
   column: string | Reference,
   options?: DbValidationOptions): this;

Validates that the value exists in the specified database table and column. Requires .knex() or .db() to be called first to set the database connection.

Parameters ​

ParameterTypeDescription
tablestring | ReferenceThe database table name (can be a Joi reference)
columnstring | ReferenceThe column name to check (can be a Joi reference)
options?DbValidationOptionsOptional configuration: - caseInsensitive: Perform case-insensitive comparison (default: false) - filter: Async function to add additional WHERE clauses to the query

Returns ​

this

Example ​

typescript
const schema = joi.object({
  country_id: joi.number().knex(db).existsInDb("countries", "id"),
  category: joi.string().knex(db).existsInDb("categories", "name", {
    caseInsensitive: true,
  }),
});

Inherited from ​

AnySchema.existsInDb


external() ​

ts
external(method: ExternalValidationFunction, description?: string): this;

Parameters ​

ParameterType
methodExternalValidationFunction
description?string

Returns ​

this

Inherited from ​

AnySchema.external


extract() ​

ts
extract(path: string | string[]): Schema;

Returns a sub-schema based on a path of object keys or schema ids.

Parameters ​

ParameterTypeDescription
pathstring | string[]a dot . separated path string or a pre-split array of path keys. The keys must match the sub-schema id or object key (if no id was explicitly set).

Returns ​

Schema

Inherited from ​

AnySchema.extract


failover() ​

ts
failover(value: any): this;

Parameters ​

ParameterType
valueany

Returns ​

this

Inherited from ​

AnySchema.failover


forbidden() ​

ts
forbidden(): this;

Returns ​

this

Inherited from ​

AnySchema.forbidden


fork() ​

ts
fork(key: string | string[] | string[][], adjuster: SchemaFunction): this;

Parameters ​

ParameterType
keystring | string[] | string[][]
adjusterSchemaFunction

Returns ​

this

Inherited from ​

AnySchema.fork


has() ​

ts
has(schema: SchemaLike): this;

Verifies that an assertion passes for at least one item in the array, where: schema - the validation rules required to satisfy the assertion. If the schema includes references, they are resolved against the array item being tested, not the value of the ref target.

Parameters ​

ParameterType
schemaSchemaLike

Returns ​

this


id() ​

ts
id(name?: string): this;

Parameters ​

ParameterType
name?string

Returns ​

this

Inherited from ​

AnySchema.id


invalid() ​

ts
invalid(...values: any[]): this;

Parameters ​

ParameterType
...valuesany[]

Returns ​

this

Inherited from ​

AnySchema.invalid


isAsync() ​

ts
isAsync(): boolean;

Returns a boolean indicating whether this schema contains a rule that requires asynchronous validation.

Returns ​

boolean

Inherited from ​

AnySchema.isAsync


items() ​

ts
items(...types: SchemaLikeWithoutArray[]): this;

List the types allowed for the array values. If a given type is .required() then there must be a matching item in the array. If a type is .forbidden() then it cannot appear in the array. Required items can be added multiple times to signify that multiple items must be found. Errors will contain the number of items that didn't match. Any unmatched item having a label will be mentioned explicitly.

Parameters ​

ParameterTypeDescription
...typesSchemaLikeWithoutArray[]joi schema objects to validate each array item against.

Returns ​

this


keep() ​

ts
keep(): this;

Returns ​

this

Inherited from ​

AnySchema.keep


knex() ​

ts
knex(connection: any): this;

Sets the database connection for database validation rules. This must be called before using .uniqueInDb() or .existsInDb().

Parameters ​

ParameterTypeDescription
connectionanyA Knex instance, transaction, or connection configuration

Returns ​

this

Example ​

typescript
import knex from 'knex'
const db = knex({ client: 'pg', connection: {...} })
const schema = joi.string().knex(db).uniqueInDb('users', 'email')

Inherited from ​

AnySchema.knex


label() ​

ts
label(name: string): this;

Parameters ​

ParameterType
namestring

Returns ​

this

Inherited from ​

AnySchema.label


length() ​

ts
length(limit: number | Reference): this;

Specifies the exact number of items in the array.

Parameters ​

ParameterType
limitnumber | Reference

Returns ​

this


max() ​

ts
max(limit: number | Reference): this;

Specifies the maximum number of items in the array.

Parameters ​

ParameterType
limitnumber | Reference

Returns ​

this


message() ​

ts
message(message: string): this;

Parameters ​

ParameterType
messagestring

Returns ​

this

Inherited from ​

AnySchema.message


messages() ​

ts
messages(messages: LanguageMessages): this;

Parameters ​

ParameterType
messagesLanguageMessages

Returns ​

this

Inherited from ​

AnySchema.messages


meta() ​

ts
meta(meta: object): this;

Parameters ​

ParameterType
metaobject

Returns ​

this

Inherited from ​

AnySchema.meta


min() ​

ts
min(limit: number | Reference): this;

Specifies the minimum number of items in the array.

Parameters ​

ParameterType
limitnumber | Reference

Returns ​

this


not() ​

ts
not(...values: any[]): this;

Parameters ​

ParameterType
...valuesany[]

Returns ​

this

Inherited from ​

AnySchema.not


note() ​

ts
note(...notes: string[]): this;

Parameters ​

ParameterType
...notesstring[]

Returns ​

this

Inherited from ​

AnySchema.note


only() ​

ts
only(): this;

Returns ​

this

Inherited from ​

AnySchema.only


optional() ​

ts
optional(): this;

Returns ​

this

Inherited from ​

AnySchema.optional


options() ​

ts
options(options: ValidationOptions): this;

Parameters ​

ParameterType
optionsValidationOptions

Returns ​

this

Inherited from ​

AnySchema.options


ordered() ​

ts
ordered(...types: SchemaLikeWithoutArray[]): this;

Lists the types in sequence order for the array values where:

Parameters ​

ParameterTypeDescription
...typesSchemaLikeWithoutArray[]joi schema objects to validate against each array item in sequence order. Multiple values may be passed as individual arguments. If a given type is .required() then there must be a matching item with the same index position in the array. Errors will contain the number of items that didn't match. Any unmatched item having a label will be mentioned explicitly.

Returns ​

this


preferences() ​

ts
preferences(options: ValidationOptions): this;

Parameters ​

ParameterType
optionsValidationOptions

Returns ​

this

Inherited from ​

AnySchema.preferences


prefs() ​

ts
prefs(options: ValidationOptions): this;

Parameters ​

ParameterType
optionsValidationOptions

Returns ​

this

Inherited from ​

AnySchema.prefs


presence() ​

ts
presence(mode: PresenceMode): this;

Parameters ​

ParameterType
modePresenceMode

Returns ​

this

Inherited from ​

AnySchema.presence


raw() ​

ts
raw(enabled?: boolean): this;

Parameters ​

ParameterType
enabled?boolean

Returns ​

this

Inherited from ​

AnySchema.raw


required() ​

ts
required(): this;

Returns ​

this

Inherited from ​

AnySchema.required


rule() ​

ts
rule(options: RuleOptions): this;

Parameters ​

ParameterType
optionsRuleOptions

Returns ​

this

Inherited from ​

AnySchema.rule


shared() ​

ts
shared(ref: Schema): this;

Parameters ​

ParameterType
refSchema

Returns ​

this

Inherited from ​

AnySchema.shared


single() ​

ts
single(enabled?: any): this;

Allow single values to be checked against rules as if it were provided as an array. enabled can be used with a falsy value to go back to the default behavior.

Parameters ​

ParameterType
enabled?any

Returns ​

this


sort() ​

ts
sort(options?: ArraySortOptions): this;

Sorts the array by given order.

Parameters ​

ParameterType
options?ArraySortOptions

Returns ​

this


sparse() ​

ts
sparse(enabled?: any): this;

Allow this array to be sparse. enabled can be used with a falsy value to go back to the default behavior.

Parameters ​

ParameterType
enabled?any

Returns ​

this


strict() ​

ts
strict(isStrict?: boolean): this;

Parameters ​

ParameterType
isStrict?boolean

Returns ​

this

Inherited from ​

AnySchema.strict


strip() ​

ts
strip(enabled?: boolean): this;

Parameters ​

ParameterType
enabled?boolean

Returns ​

this

Inherited from ​

AnySchema.strip


tag() ​

ts
tag(...tags: string[]): this;

Parameters ​

ParameterType
...tagsstring[]

Returns ​

this

Inherited from ​

AnySchema.tag


tailor() ​

ts
tailor(targets: string | string[]): Schema;

Applies any assigned target alterations to a copy of the schema that were applied via any.alter().

Parameters ​

ParameterType
targetsstring | string[]

Returns ​

Schema

Inherited from ​

AnySchema.tailor


unique() ​

ts
unique(comparator?: string | ComparatorFunction, options?: ArrayUniqueOptions): this;

Requires the array values to be unique. Remember that if you provide a custom comparator function, different types can be passed as parameter depending on the rules you set on items. Be aware that a deep equality is performed on elements of the array having a type of object, a performance penalty is to be expected for this kind of operation.

Parameters ​

ParameterType
comparator?string | ComparatorFunction
options?ArrayUniqueOptions

Returns ​

this


uniqueInDb() ​

ts
uniqueInDb(
   table: string | Reference,
   column: string | Reference,
   options?: DbValidationOptions): this;

Validates that the value is unique in the specified database table and column. Requires .knex() or .db() to be called first to set the database connection.

Parameters ​

ParameterTypeDescription
tablestring | ReferenceThe database table name (can be a Joi reference)
columnstring | ReferenceThe column name to check (can be a Joi reference)
options?DbValidationOptionsOptional configuration: - caseInsensitive: Perform case-insensitive comparison (default: false) - filter: Async function to add additional WHERE clauses to the query

Returns ​

this

Example ​

typescript
const schema = joi.object({
  email: joi.string().email().knex(db).uniqueInDb("users", "email"),
  username: joi
    .string()
    .knex(db)
    .uniqueInDb("users", "username", {
      caseInsensitive: true,
      filter: async (query) => query.where("tenant_id", tenantId),
    }),
});

Inherited from ​

AnySchema.uniqueInDb


unit() ​

ts
unit(name: string): this;

Parameters ​

ParameterType
namestring

Returns ​

this

Inherited from ​

AnySchema.unit


valid() ​

ts
valid(...values: any[]): this;

Parameters ​

ParameterType
...valuesany[]

Returns ​

this

Inherited from ​

AnySchema.valid


validate() ​

ts
validate(value: any, options?: ValidationOptions): ValidationResult<TSchema>;

Validates a value using the schema and options.

Parameters ​

ParameterType
valueany
options?ValidationOptions

Returns ​

ValidationResult<TSchema>

Inherited from ​

AnySchema.validate


validateAsync() ​

ts
validateAsync<TOpts>(value: any, options?: TOpts): Promise<TOpts extends
  | {
  artifacts: true;
}
  | {
  warnings: true;
} ? {
  value: TSchema;
} & TOpts<TOpts> extends {
  artifacts: true;
} ? {
  artifacts: Map<any, string[][]>;
} : {
} & TOpts<TOpts> extends {
  warnings: true;
} ? {
  warning: ValidationWarning;
} : {
} : TSchema>;

Validates a value using the schema and options.

Type Parameters ​

Type Parameter
TOpts extends AsyncValidationOptions

Parameters ​

ParameterType
valueany
options?TOpts

Returns ​

Promise<TOpts extends | { artifacts: true; } | { warnings: true; } ? { value: TSchema; } & TOpts<TOpts> extends { artifacts: true; } ? { artifacts: Map<any, string[][]>; } : { } & TOpts<TOpts> extends { warnings: true; } ? { warning: ValidationWarning; } : { } : TSchema>

Inherited from ​

AnySchema.validateAsync


warn() ​

ts
warn(): this;

Returns ​

this

Inherited from ​

AnySchema.warn


warning() ​

ts
warning(code: string, context: ValidationContext): this;

Parameters ​

ParameterType
codestring
contextValidationContext

Returns ​

this

Inherited from ​

AnySchema.warning


when() ​

Call Signature ​

ts
when(ref: string | Reference, options:
  | WhenOptions<any, any>
  | WhenOptions<any, any>[]): this;
Parameters ​
ParameterType
refstring | Reference
options| WhenOptions<any, any> | WhenOptions<any, any>[]
Returns ​

this

Inherited from ​

AnySchema.when

Call Signature ​

ts
when(ref: Schema, options: WhenSchemaOptions): this;
Parameters ​
ParameterType
refSchema
optionsWhenSchemaOptions
Returns ​

this

Inherited from ​

AnySchema.when