create-nodeapi-backend
Version:
A powerful Node.js backend boilerplate with Express, MongoDB, Firebase, JWT auth, Nodemailer, cron jobs, input validation (Joi), and serverless support for Vercel. Scaffold a full-featured API backend in seconds.
23 lines (18 loc) • 643 B
JavaScript
const Joi = require("joi");
const pick = require("../utils/pick");
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 res.status(400).send({ errorMessage });
}
Object.assign(req, value);
return next();
};
module.exports = validate;