< Érvényesség

Express - Érvényesség joi-val

Szerző: Sallai András

Copyright © 2024, Sallai András

Licenc: 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);