[[oktatas:web:back-end_framework:express:ervenyesseg|< Érvényesség]]
====== Express - Érvényesség joi-val ======
* **Szerző:** Sallai András
* Copyright (c) 2024, Sallai András
* Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC BY-SA 4.0]]
* Web: https://szit.hu
===== Bevezetés =====
Célunk a bejövő adatok ellenőrzése. A bejövő adatokat ellenőrizhetjük a kontrollerben is,
vagy írhatunk rá köztes szoftvert.
Dokumentáció:
* https://joi.dev/ (2024)
===== Függőségek =====
npm install joi
vagy:
pnpm add joi
===== Validator =====
import Joi from 'joi';
const empSchema = Joi.object({
name: Joi.string().required(),
city: Joi.string().min(2),
salary: Joi.number().min(100).max(1000)
});
const empValidator = (req, res, next) => {
const { error } = empSchema.validate(req.body);
if (error) {
res.status(400)
return res.json({ error: error.details[0].message });
}
next();
};
export default empValidator;
===== Használat az útválasztóban =====
import { Router } from 'express';
import EmployeeController from '../controllers/employeeController.js';
import empValidator from '../middlewares/empValidator.js';
const router = Router();
router.get('/employees', EmployeeController.index);
router.post('/employees', [empValidator], EmployeeController.store);
export default router;
===== Regisztráció érvényessége =====
import Joi from 'joi';
const registerValidator = (req, res, next) => {
const schema = Joi.object({
user: Joi.string().min(3).required(),
email: Joi.string().email().required(),
pass: Joi.string().min(5).required(),
pass_confirm: Joi.string().min(5).required().valid(Joi.ref('pass'))
});
const { error } = schema.validate(req.body);
if (error) {
res.status(422);
return res.json({ errors: error.message });
}
next();
};
export { registerValidator };
A routingban:
router.post('/register', [registerValidator], AuthController.register);