Install joi
npm i joi
Create SchemaValidator
const Joi = require('joi');
const options = {
abortEarly: false,
allowUnknown: true,
stripUnknown: true
};
class UserSchemaValidator {
createUserSchema = async function (req,res,next){
const schema = Joi.object({
name: Joi.string().required(),
email: Joi.string().email().required(),
password: Joi.string().min(6).required(),
role: Joi.string().valid('ADMIN', 'USER').required()
});
validate(schema,req,res,next);
}
validate = async function(schema,req,res,next){
try{
let result = await schema.validateAsync(req.body, options);
console.log("Result:", result);
next();
}
catch(error){
let errorMessages = error.details.map(x=>x.message);
console.error(JSON.stringify(errorMessages));
let result = { status: 400, errors: errorMessages};
res.status(400).json(result);
}
}
}
exports.UserSchemaValidator = UserSchemaValidator;