init
This commit is contained in:
21
src/middlewares/validate.js
Normal file
21
src/middlewares/validate.js
Normal file
@@ -0,0 +1,21 @@
|
||||
const Joi = require('joi');
|
||||
const httpStatus = require('http-status');
|
||||
const pick = require('../utils/pick');
|
||||
const ApiError = require('../utils/ApiError');
|
||||
|
||||
const validate = (schema) => (req, res, next) => {
|
||||
const validSchema = pick(schema, ['params', 'query', 'body']);
|
||||
const object = pick(req, Object.keys(validSchema));
|
||||
const { value, error } = Joi.compile(validSchema)
|
||||
.prefs({ errors: { label: 'key' }, abortEarly: false })
|
||||
.validate(object);
|
||||
|
||||
if (error) {
|
||||
const errorMessage = error.details.map((details) => details.message).join(', ');
|
||||
return next(new ApiError(httpStatus.BAD_REQUEST, errorMessage));
|
||||
}
|
||||
Object.assign(req, value);
|
||||
return next();
|
||||
};
|
||||
|
||||
module.exports = validate;
|
||||
Reference in New Issue
Block a user