A hibák két részre oszthatók:
A kliens oldali hibák általában a nem megfelelő kérés miatt vannak, amelyeket érvényesség vizsgálattal kezelünk.
A hibák kezelése két módon történhet:
Legyen a példa kedvéért egy Employee modell, amiben a nem érték validálva van:
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: 'Hiba! A name mező megadása kötelező!' } } }, city: { type: DataTypes.STRING, allowNull: true }, salary: { type: DataTypes.DOUBLE , allowNull: true } }) sequelize.sync({ force: false }) module.exports = Employee
sequelize.define('egy', { valami: { type: DataTypes.STRING, validate: { notNull: true, // A valami mező megadása kötelező (A name is required) notEmpty: true, // A valami mező nem lehet üres (Please privide a name) isNumeric: true, // A valami mező tartalma csak szám lehet isEmail: true }
Ebben a példában a try catch hibakezelés le van választva külön függvénybe.
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() res.json({ success: true, data: employees }) }, 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 } const result = await Employee.create(employee) res.status(201) res.json({ succes: true, data: result }) } } module.exports = EmployeeController
const { Sequelize } = require('sequelize') const Employee = require('../models/employee') const EmployeeController = { async index(req, res) { await Employee.findAll() .then( result => { res.status(200) res.json({ success: true, data: result }) }) .catch(error => { res.status(500) res.json({ success: false, message: 'Error! The query is failed!' }) }) }, async store(req, res) { const employee = { name: req.body.name, city: req.body.email, salary: req.body.password } await Employee.create(employee) .then( result => { res.status(201) res.json({ succes: true, data: result }) }) .catch(error => { const errorMessage = error.errors[0].message res.json({ access: false, error: errorMessage }) }) } } module.exports = EmployeeController