Felhasználói eszközök

Eszközök a webhelyen


oktatas:web:back-end_framework:express:ervenyesseg:sequelize_beepitett

Ez a dokumentum egy előző változata!


< Érvényesség

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

Bevezetés

Az Sequelize rendelkezik beépített érvényesítéssel.

Model

employee.js
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:

employeeController.js
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

oktatas/web/back-end_framework/express/ervenyesseg/sequelize_beepitett.1743316121.txt.gz · Utolsó módosítás: 2025/03/30 08:28 szerkesztette: admin