express-validator
- Version 7.2.1
- Published
- 145 kB
- 2 dependencies
- MIT license
Install
npm i express-validator
yarn add express-validator
pnpm add express-validator
Overview
Express middleware for the validator module.
Index
Variables
Functions
Classes
Interfaces
Type Aliases
- AlternativeMessageFactory
- AlternativeValidationError
- CustomSanitizer
- CustomSchema
- CustomValidationChain
- CustomValidator
- ErrorFormatter
- FieldMessageFactory
- FieldValidationError
- GroupedAlternativeMessageFactory
- GroupedAlternativeValidationError
- Location
- MatchedDataOptions
- Meta
- OneOfErrorType
- OneOfOptions
- ParamSchema
- ParamSchemaWithExtensions
- ResultFactory
- Schema
- UnknownFieldMessageFactory
- UnknownFieldsError
- ValidationChainWithExtensions
- ValidationError
Variables
variable validationResult
const validationResult: ResultFactory<ValidationError> & { withDefaults: typeof withDefaults;};
Extracts the validation errors of an express request
Functions
function body
body: ( fields?: string | string[], message?: FieldMessageFactory | ErrorMessage) => import('..').ValidationChain;
Same as , but only validates
req.body
.
function buildCheckFunction
buildCheckFunction: ( locations: Location[]) => ( fields?: string | string[], message?: FieldMessageFactory | ErrorMessage) => import('..').ValidationChain;
Creates a variant of
check()
that checks the given request locations.Example 1
const checkBodyAndQuery = buildCheckFunction(['body', 'query']);
function check
check: ( fields?: string | string[], message?: FieldMessageFactory | ErrorMessage) => import('..').ValidationChain;
Creates a middleware/validation chain for one or more fields that may be located in any of the following:
-
req.body
-req.cookies
-req.headers
-req.params
-req.query
Parameter fields
a string or array of field names to validate/sanitize
Parameter message
an error message to use when failed validations don't specify a custom message. Defaults to
Invalid Value
.
function checkExact
checkExact: ( chains?: CheckExactInput, opts?: CheckExactOptions) => Middleware & ContextRunner;
Checks whether the request contains exactly only those fields that have been validated.
Unknown fields, if found, will generate an error of type
unknown_fields
.Parameter chains
either a single chain, an array of chains, or a mixed array of chains and array of chains. This means that all of the below are valid:
checkExact(check('foo'))checkExact([check('foo'), check('bar')])checkExact([check('foo'), check('bar')])checkExact(checkSchema({ ... }))checkExact([checkSchema({ ... }), check('foo')])Parameter opts
function checkSchema
checkSchema: <T extends string = DefaultSchemaKeys>( schema: Schema<T>, defaultLocations?: Location[]) => RunnableValidationChains<ValidationChain>;
Creates an express middleware with validations for multiple fields at once in the form of a schema object.
Parameter schema
the schema to validate.
Parameter defaultLocations
Returns
function cookie
cookie: ( fields?: string | string[], message?: FieldMessageFactory | ErrorMessage) => import('..').ValidationChain;
Same as , but only validates
req.cookies
.
function header
header: ( fields?: string | string[], message?: FieldMessageFactory | ErrorMessage) => import('..').ValidationChain;
Same as , but only validates
req.headers
.
function matchedData
matchedData: <T extends object = Record<string, any>>( req: Request, options?: Partial<MatchedDataOptions>) => T;
Extracts data validated or sanitized from the request, and builds an object with them.
Parameter req
the express request object
Parameter options
Returns
an object of data that's been validated or sanitized in the passed request
function oneOf
oneOf: ( chains: (ValidationChain | ValidationChain[])[], options?: OneOfOptions) => Middleware & ContextRunner;
Creates a middleware that will ensure that at least one of the given validation chains or validation chain groups are valid.
If none are, a single
AlternativeValidationError
orGroupedAlternativeValidationError
is added to the request, with the errors of each chain made available under thenestedErrors
property.Parameter chains
an array of validation chains to check if are valid. If any of the items of
chains
is an array of validation chains, then all of them must be valid together for the request to be considered valid.
function param
param: ( fields?: string | string[], message?: FieldMessageFactory | ErrorMessage) => import('..').ValidationChain;
Same as , but only validates
req.params
.
function query
query: ( fields?: string | string[], message?: FieldMessageFactory | ErrorMessage) => import('..').ValidationChain;
Same as , but only validates
req.query
.
Classes
class ExpressValidator
class ExpressValidator< V extends CustomValidatorsMap = {}, S extends CustomSanitizersMap = {}, E = ValidationError> {}
constructor
constructor( validators?: CustomValidatorsMap, sanitizers?: CustomSanitizersMap, options?: CustomOptions<E>);
property body
readonly body: ( fields?: string | string[], message?: FieldMessageFactory | ErrorMessage) => CustomValidationChain<this>;
Same as ExpressValidator.check, but only validates in
req.body
.
property check
readonly check: ( fields?: string | string[], message?: FieldMessageFactory | ErrorMessage) => CustomValidationChain<this>;
Creates a middleware/validation chain for one or more fields that may be located in any of the following:
-
req.body
-req.cookies
-req.headers
-req.params
-req.query
Parameter fields
a string or array of field names to validate/sanitize
Parameter message
an error message to use when failed validations don't specify a custom message. Defaults to
Invalid Value
.
property checkExact
readonly checkExact: ( chains?: CheckExactInput, opts?: CheckExactOptions) => Middleware & ContextRunner;
Checks whether the request contains exactly only those fields that have been validated.
This method is here for convenience; it does exactly the same as
checkExact
.See Also
property checkSchema
readonly checkSchema: <T extends string = DefaultSchemaKeys>( schema: CustomSchema<this, T>, locations?: Location[]) => RunnableValidationChains<CustomValidationChain<this>>;
Creates an express middleware with validations for multiple fields at once in the form of a schema object.
Parameter schema
the schema to validate.
Parameter defaultLocations
which locations to validate in each field. Defaults to every location.
property cookie
readonly cookie: ( fields?: string | string[], message?: FieldMessageFactory | ErrorMessage) => CustomValidationChain<this>;
Same as ExpressValidator.check, but only validates in
req.cookies
.
property header
readonly header: ( fields?: string | string[], message?: FieldMessageFactory | ErrorMessage) => CustomValidationChain<this>;
Same as ExpressValidator.check, but only validates in
req.headers
.
property param
readonly param: ( fields?: string | string[], message?: FieldMessageFactory | ErrorMessage) => CustomValidationChain<this>;
Same as ExpressValidator.check, but only validates in
req.params
.
property query
readonly query: ( fields?: string | string[], message?: FieldMessageFactory | ErrorMessage) => CustomValidationChain<this>;
Same as ExpressValidator.check, but only validates in
req.query
.
property validationResult
readonly validationResult: (req: Request) => Result<E>;
Extracts the validation errors of an express request using the default error formatter of this instance.
Parameter req
the express request object
Returns
a
Result
which will by default use the error formatter passed when instantiatingExpressValidator
.See Also
method buildCheckFunction
buildCheckFunction: ( locations: Location[]) => ( fields?: string | string[], message?: FieldMessageFactory | ErrorMessage) => CustomValidationChain<this>;
method matchedData
matchedData: ( req: Request, options?: Partial<MatchedDataOptions>) => Record<string, any>;
Extracts data validated or sanitized from the request, and builds an object with them.
This method is a shortcut for
matchedData
; it does nothing different than it.See Also
method oneOf
oneOf: ( chains: (CustomValidationChain<this> | CustomValidationChain<this>[])[], options?: OneOfOptions) => Middleware & ContextRunner;
Creates a middleware that will ensure that at least one of the given validation chains or validation chain groups are valid.
If none are, a single error of type
alternative
is added to the request, with the errors of each chain made available under thenestedErrors
property.Parameter chains
an array of validation chains to check if are valid. If any of the items of
chains
is an array of validation chains, then all of them must be valid together for the request to be considered valid.
class Result
class Result<T = any> {}
The current state of the validation errors in a request.
constructor
constructor(formatter: ErrorFormatter<T>, errors: readonly ValidationError[]);
method array
array: (options?: ToArrayOptions) => T[];
Gets the validation errors as an array.
Parameter
options.onlyFirstError whether only the first error of each
method formatWith
formatWith: <T2>(formatter: ErrorFormatter<T2>) => Result<T2>;
Specifies a function to format errors with.
Parameter formatter
the function to use for formatting errors
Returns
A new Result instance with the given formatter
method isEmpty
isEmpty: () => boolean;
Returns
true
if there are no errors,false
otherwise
method mapped
mapped: () => Record<string, T>;
Gets the validation errors as an object. If a field has more than one error, only the first one is set in the resulting object.
Returns
an object from field name to error
method throw
throw: () => void;
Throws an error if there are validation errors.
Interfaces
interface ContextRunner
interface ContextRunner {}
method run
run: ( req: Request, options?: ContextRunningOptions) => Promise<ResultWithContext>;
Runs the current validation chain.
Parameter req
the express request to validate
Parameter options
an object of options to customize how the chain will be run
Returns
a promise for a Result that resolves when the validation chain has finished
interface ValidationChain
interface ValidationChain extends Validators<ValidationChain>, Sanitizers<ValidationChain>, ContextHandler<ValidationChain>, ContextRunner {}
property builder
builder: ContextBuilder;
call signature
(req: Request, res: any, next: (error?: any) => void): void;
Type Aliases
type AlternativeMessageFactory
type AlternativeMessageFactory = ( nestedErrors: FieldValidationError[], opts: { req: Request; }) => any;
A function which creates an error message based on an alternative's nested errors.
Parameter nestedErrors
The errors from the invalid alternative(s).
Parameter opts
See Also
oneOf()
type AlternativeValidationError
type AlternativeValidationError = { /** * Indicates that the error occurred because all alternatives (e.g. in `oneOf()`) were invalid */ type: 'alternative'; /** * The error message */ msg: any; /** * The list of underlying validation errors returned by validation chains in `oneOf()` */ nestedErrors: FieldValidationError[];};
type CustomSanitizer
type CustomSanitizer = (input: any, meta: Meta) => any;
type CustomSchema
type CustomSchema< T extends ExpressValidator<any, any, any>, K extends string = DefaultSchemaKeys> = T extends ExpressValidator<infer V, infer S, any> ? Record< string, ParamSchemaWithExtensions< Extract<keyof V, string>, Extract<keyof S, string>, K > > : never;
Mapping from field name to a validations/sanitizations schema, including extensions from an ExpressValidator instance.
type CustomValidationChain
type CustomValidationChain<T extends ExpressValidator<any, any, any>> = T extends ExpressValidator<infer V, infer S, any> ? ValidationChainWithExtensions<Extract<keyof V | keyof S, string>> : never;
Type of a validation chain created by a custom ExpressValidator instance.
Example 1
const myExpressValidator = new ExpressValidator({isAllowedDomain: value => value.endsWith('@gmail.com')});type MyCustomValidationChain = CustomValidationChain<typeof myExpressValidator>function createMyCustomChain(): MyCustomValidationChain {return myExpressValidator.body('email').isAllowedDomain();}
type CustomValidator
type CustomValidator = (input: any, meta: Meta) => any;
A function which may - return falsy values, a promise that rejects or throw to indicate that a field is invalid; - return truthy values or a promise that resolves to indicate that a field is valid.
Parameter input
the field value
Parameter meta
metadata about the field being validated
type ErrorFormatter
type ErrorFormatter<T = any> = (error: ValidationError) => T;
Given a validation error, returns a new value that represents it.
type FieldMessageFactory
type FieldMessageFactory = (value: any, meta: Meta) => any;
A function which creates an error message based on a field's value.
Parameter input
the field value
Parameter meta
metadata about the field that was validated
type FieldValidationError
type FieldValidationError = { /** * Indicates that the error occurred because a field had an invalid value */ type: 'field'; /** * The location within the request where this field is */ location: Location; /** * The path to the field which has a validation error */ path: string; /** * The value of the field. It might be unset if the value is hidden. */ value?: any; /** * The error message */ msg: any;};
type GroupedAlternativeMessageFactory
type GroupedAlternativeMessageFactory = ( nestedErrors: FieldValidationError[][], opts: { req: Request; }) => any;
A function which creates an error message based on a group of alternatives nested errors.
Parameter nestedErrors
The errors from the invalid alternative groups.
Parameter opts
See Also
oneOf()
type GroupedAlternativeValidationError
type GroupedAlternativeValidationError = { /** * Indicates that the error occurred because all alternatives (e.g. in `oneOf()`) were invalid, * and the nested errors are grouped per alternative. */ type: 'alternative_grouped'; /** * The error message */ msg: any; /** * The list of underlying validation errors returned by validation chains in `oneOf()` */ nestedErrors: FieldValidationError[][];};
type Location
type Location = 'body' | 'cookies' | 'headers' | 'params' | 'query';
type MatchedDataOptions
type MatchedDataOptions = { /** * Whether the value returned by `matchedData()` should include data deemed optional. * @default false */ includeOptionals: boolean; /** * An array of locations in the request to extract the data from. */ locations: Location[]; /** * Whether the value returned by `matchedData()` should include only values that have passed * validation. * @default true */ onlyValidData: boolean;};
type Meta
type Meta = { /** * The express request from which the field was validated */ req: Request; /** * Which of the request objects the field was picked from */ location: Location; /** * The full path of the field within the request object. * * @example * const meta = { req, location: 'body', path: 'foo.bar' }; // req.body.foo.bar */ path: string; /** * Values from wildcards/globstars used when selecting fields for validation. * * @example * body('products.*.price').custom((value, { req, pathValues }) => { * const index = pathValues[0]; * const productName = req.body.products[index].name; * }); */ pathValues: readonly (string | string[])[];};
Metadata about a validated field.
type OneOfErrorType
type OneOfErrorType = 'grouped' | 'least_errored' | 'flat';
type OneOfOptions
type OneOfOptions = | { /** * The error message to use in case none of the chains are valid. */ message?: AlternativeMessageFactory | ErrorMessage; errorType?: Exclude<OneOfErrorType, 'grouped'>; } | { /** * The error message to use in case none of the chain groups are valid. */ message?: GroupedAlternativeMessageFactory | ErrorMessage; errorType?: 'grouped'; };
type ParamSchema
type ParamSchema<T extends string = DefaultSchemaKeys> = BaseParamSchema & ValidatorsSchema & SanitizersSchema & { [K in T]?: K extends keyof BaseParamSchema ? BaseParamSchema[K] : K extends keyof ValidatorsSchema ? ValidatorsSchema[K] : K extends keyof SanitizersSchema ? SanitizersSchema[K] : CustomValidatorSchemaOptions | CustomSanitizerSchemaOptions; };
Defines a schema of validations/sanitizations for a field
type ParamSchemaWithExtensions
type ParamSchemaWithExtensions< V extends string, S extends string, T extends string = DefaultSchemaKeys> = { [K in keyof ParamSchema<T> | V | S]?: K extends V ? ExtensionValidatorSchemaOptions : K extends S ? ExtensionSanitizerSchemaOptions : K extends keyof ParamSchema<T> ? ParamSchema<T>[K] : never;};
Schema of validations/sanitizations for a field, including extension validators/sanitizers
type ResultFactory
type ResultFactory<T> = (req: Request) => Result<T>;
type Schema
type Schema<T extends string = DefaultSchemaKeys> = Record<string, ParamSchema<T>>;
Defines a mapping from field name to a validations/sanitizations schema.
type UnknownFieldMessageFactory
type UnknownFieldMessageFactory = ( unknownFields: UnknownFieldInstance[], opts: { req: Request; }) => any;
A function which creates an error message based on unknown fields.
Parameter unknownFields
The unknown fields found in the request
Parameter opts
See Also
checkExact()
type UnknownFieldsError
type UnknownFieldsError = { /** * Indicates that the error occurred because one or more fields are unknown in the request */ type: 'unknown_fields'; /** * The error message */ msg: any; /** * The list of fields that are unknown */ fields: UnknownFieldInstance[];};
type ValidationChainWithExtensions
type ValidationChainWithExtensions<T extends string> = Middleware & { [K in keyof ValidationChain]: ValidationChain[K] extends ( ...args: infer A ) => ValidationChain ? (...params: A) => ValidationChainWithExtensions<T> : ValidationChain[K];} & { [K in T]: () => ValidationChainWithExtensions<T>;};
A validation chain that contains some extension validators/sanitizers.
Built-in methods return the same chain type so that chaining using more of the extensions is possible.
Example 1
function createChain(chain: ValidationChainWithExtensions<'isAllowedDomain' | 'removeEmailAttribute'>) {return chain.isEmail().isAllowedDomain().trim().removeEmailAttribute();}
type ValidationError
type ValidationError = | AlternativeValidationError | GroupedAlternativeValidationError | UnknownFieldsError | FieldValidationError;
A validation error as reported by a middleware. The properties available in the error object vary according to the type.
Example 1
if (error.type === 'alternative') { console.log(
There are ${error.nestedErrors.length} errors under this alternative list
); } else if (error.type === 'field') { console.log(There's an error with field ${error.path} in the request ${error.location}
); }
Package Files (11)
Dependencies (2)
Dev Dependencies (15)
Peer Dependencies (0)
No peer dependencies.
Badge
To add a badge like this oneto your package's README, use the codes available below.
You may also use Shields.io to create a custom badge linking to https://www.jsdocs.io/package/express-validator
.
- Markdown[![jsDocs.io](https://img.shields.io/badge/jsDocs.io-reference-blue)](https://www.jsdocs.io/package/express-validator)
- HTML<a href="https://www.jsdocs.io/package/express-validator"><img src="https://img.shields.io/badge/jsDocs.io-reference-blue" alt="jsDocs.io"></a>
- Updated .
Package analyzed in 3838 ms. - Missing or incorrect documentation? Open an issue for this package.