A bedrock module that provides a express middleware and an API for validating data structures and their contents. bedrock-validation uses schemas based on JSON schema.
npm install @bedrock/validation
import * as bedrock from '@bedrock/core';
import {postBarValidator, postBarQueryValidator} from '../schemas/my-schemas.js';
import {createValidateMiddleware as validate} from '@bedrock/validation';
// load schemas from '/foo'
bedrock.config.validation.schema.paths.push('/foo');
// add an express route with validation middleware
bedrock.events.on('bedrock-express.configure.routes', function(app) {
app.post('/bar',
// validate the query using the 'postBarQueryValidator'
// validate the response body using the 'postBarValidator'
validate({querySchema: postBarQueryValidator, bodySchema: postBarValidator}),
function(req, res) {
// do something
});
});
bedrock.start();
bedrock-validation will, on initialization (via the bedrock.init
event),
read any schemas found in the list of paths specified in
bedrock.config.validation.schema.paths
. Individual schemas can be skipped
via the bedrock.config.validation.schema.skip
configuration option. If any
schema name matches a previously loaded schema, it will override that
schema.
For more documentation on configuration, see config.js.
This method may be called with either query
or body
defined.
The method returns express middleware that will be used to validate a request
using the schema associated with either query
or body
.
Retrieves a validation schema given a name
for the schema. If no such
schema exists, null
is returned.
Validates an instance
(data) against a schema
. This method may be used
to validate data using a schema that wasn't necessarily registered via
the configuration system. The schema
must be a JSON schema instance. The
return value will contain the result of the validation. This function returns
a promise that resolves to:
{
valid: <boolean>,
error: <error> // only present when valid === false
}