Miscellaneous
buildCheckFunction()
import { buildCheckFunction } from 'express-validator';
buildCheckFunction(locations: Location[]): (
fields?: string | string[],
message?: FieldMessageFactory | ErrorMessage,
) => ValidationChain
Creates a variant of the check() function that checks only the given request locations.
const bodyOrQuery = buildCheckFunction(['body', 'query']);
app.put(
'/update-product',
// id must be either in req.body or req.query, and must be an UUID
bodyOrQuery('id').isUUID(),
productUpdateHandler,
);
TypeScript types
ContextRunner
interface ContextRunner {
run(req: Request, options?: { dryRun: boolean }): Promise<Result>;
}
Interface implemented by all middlewares which run some sort of validation/sanitization.
Returns a promise for a Result exclusive to that validation
chain/middleware.
import { check } from 'express-validator';
app.post('/recover-password', (req, res) => {
const result = await check('username').notEmpty().run(req);
if (!result.isEmpty()) {
return res.send('Something is wrong with the username.');
}
});
By default, the validation and sanitization results are persisted back into req, which means that
- calling
validationResult(req)will include the results for this validation - a sanitized field will be updated on the request, such as
body('message').trim()will updatereq.body.message.
This behavior can be changed by setting options.dryRun to true, which will simply run the validations
and return the result.
import { check } from 'express-validator';
app.post('/login', (req, res) => {
const usernameResult = await check('username').notEmpty().run(req, { dryRun: true });
const passwordResult = await check('password').notEmpty().run(req, { dryRun: false });
const result = validationResult(req);
// `result` won't include errors from `usernameResult`,
// but will include those from `passwordResult`
});
Location
type Location = 'body' | 'cookies' | 'headers' | 'params' | 'query';
Represents one of the request locations: req.body, req.cookies, req.headers, req.params and
req.query.