1.0.1 • Published 2 years ago
express-self-validator v1.0.1
express-self-validator
This is a self express validator middleware.
This middleware accepts validation function and returns a middleware that validates the request.
written in typescript.
Installation
npm install express-self-validator
Usage
const express = require('express');
const expressSelfValidator = require('express-self-validator');
const app = express();
app.get('/', expressSelfValidator({
// validation on the request query params
query: {
// key is the name of the query parameter
key: "offest",
// custom validation function
// not that each validation function should return a boolean
// and the validation function should be sync
validators: [
[isNumber, "offset must be a number"],
// we can be sure value to be number here because of the previous validation
[(value) => value > 0, "offset must be greater than 0"]
[(value) => offset < 0 , "offset must be greater than 0"],
[(value) => offset > 100 , "offset must be less than 100"]
],
// optional, default is false
required: true,
}
}) , (req, res) => {
res.send('Hello World!');
});
you can validate request body, query, params
for example to validate request body you can do this:
{
body: {
key: "name",
validators: [
[isString, "name must be a string"],
[(value) => value.length > 3 && value.length < 10>, "name must be between 3 and 10"],
],
required: true,
}
}
handling validation errors
when using this middleware, you can handle validation errors by catching those errors in your error handling middleware.
the middleware will throw an error with the following structure:
{
status: 400 // 0r 500 ( if there were an error running validator functions) , depends on the error
message: "validation error",
errors: [
{
key: "name",
message: "name must be a string"
},
{
key: "name",
message: "name must be between 3 and 10"
}
]
isOperational: true
}
app.use((err, req, res, next) => {
if (err instanceof expressSelfValidator.ValidationError) {
res.status(err.status).json({
message: err.message,
errors: err.errors
})
} else {
next(err);
}
});