< Érvényesség

Express - Sequeliez beépített érvényesítés

Szerző: Sallai András

Copyright © 2025, Sallai András

Licenc: CC BY-SA 4.0

Web: https://szit.hu

Bevezetés

Az Sequelize rendelkezik beépített érvényesítéssel. Itt a Sequelize 6.x verzióhoz tartozó érvényességvizsgálatot nézzük át.

Model

const { DataTypes } = require('sequelize') const sequelize = require('../database/database') const Employee = sequelize.define('employee', { id: { type: DataTypes.INTEGER, autoIncrement: true, primaryKey: true }, name: { type: DataTypes.STRING, allowNull: false, validate: { notNull: { msg: 'A név mező kötelező' }, notEmpty: { msg: 'A név nem lehet üres' } } }, city: { type: DataTypes.STRING, allowNull: true, validate: { is: { args: /^[a-z]+$/i, msg: 'Hiba! Csak betűk adhatók meg!' } } }, salary: { type: DataTypes.DOUBLE, defaultValue: 300, validate: { isNumeric: {msg: 'Hiba! Csak szám adható meg!'} } }, birth: { type: DataTypes.DATEONLY, defaultValue: DataTypes.NOW, validate: { isDate: {msg: 'Hiba! Csak dátum!'} } } }) sequelize.sync({ force: false }) module.exports = Employee

Kontroller

Az érvényességet a modell-ben beállítottuk. Most nézzük meg, hogyan írhatunk saját figyelmeztetést az érvényességi hibákra.

A hibakezelő részben vizsgáljuk meg, hogy érvényességi hiba történt-e:

if(error instanceof Sequelize.ValidationError) { res.status(400) }else { res.status(500) }

Lehetséges teljes kód:

const { Sequelize } = require('sequelize') const Employee = require('../models/employee') const EmployeeController = { async index(req, res) { try { await EmployeeController.tryIndex(req, res) } catch (error) { res.status(500) res.json({ success: false, error: error.message }) } }, async tryIndex(req, res) { const employees = await Employee.findAll() const result = employees.map(emp => ({ id: emp.id, name: emp.name, city: emp.city, salary: emp.salary, birth: emp.birth })) res.json({ success: true, data: result }) }, async store(req, res) { try { await EmployeeController.tryStore(req, res) } catch (error) { if(error instanceof Sequelize.ValidationError) { res.status(400) }else { res.status(500) } const errorMessage = error.errors[0].message res.json({ access: false, error: errorMessage }) } }, async tryStore(req, res) { const employee = { name: req.body.name, city: req.body.city, salary: req.body.salary, birth: req.body.birth } const result = await Employee.create(employee) res.status(201) res.json({ succes: true, data: result }) } } module.exports = EmployeeController

A mintaprogramban a hibakezelés és a lényegi kód szét van választva.

Lásd még

https://sequelize.org/docs/v6/core-concepts/validations-and-constraints/

https://sequelize.org/docs/v7/models/validations-and-constraints/

https://github.com/validatorjs/validator.js