[[:oktatas:web:back-end_framework:express|< Express]] ====== Express - Táblák kapcsolása ES ====== * **Szerző:** Sallai András * Copyright (c) 2025, Sallai András * Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC Attribution-Share Alike 4.0 International]] * Web: https://szit.hu ===== Táblák ===== employees(id, name, city, salary, rankId) ranks(id, name) ===== Model ===== Importálnunk kell a Rank modelt az Employee modell állományában. import Rank from './rank.js' import { DataTypes } from 'sequelize' import sequelize from '../database/database.js' import Rank from './rank.js' const Employee = sequelize.define('employee', { id: { type: DataTypes.INTEGER, autoIncrement: true, primaryKey: true }, name: { type: DataTypes.STRING, allowNull: false }, city: { type: DataTypes.STRING, allowNull: true }, salary: { type: DataTypes.DOUBLE, allowNull: true }, rankId: { type: DataTypes.INTEGER, allowNull: true } }) Employee.belongsTo(Rank, { foreignKey: 'rankId' }) sequelize.sync({ force: false }) export default Employee Megadható a ranks táblában a célmező is: Employee.belongsTo(Rank, { foreignKey: 'rankId', targetKey: 'id' }) ===== Hivatkozás az adatbázisban ===== Ha szeretnénk az adatbázisban is meg legyen a hivatkozás a ranks táblára: import { DataTypes } from 'sequelize' import sequelize from '../database/database.js' import Rank from './rank.js' const Employee = sequelize.define('employee', { id: { type: DataTypes.INTEGER, autoIncrement: true, primaryKey: true }, name: { type: DataTypes.STRING, allowNull: false }, city: { type: DataTypes.STRING, allowNull: true }, salary: { type: DataTypes.DOUBLE, allowNull: true }, rankId: { type: DataTypes.INTEGER, allowNull: true, references: { model: Rank, key: 'id' } } }) Employee.belongsTo(Rank, { foreignKey: 'rankId' }) sequelize.sync({ force: false }) export default Employee ===== Kontroller ===== A dolgozók lekérdezéséhez kapcsoljuk a beosztásokat. const employees = await Employee.findAll({ include: ['rank'] }) Megadhatjuk milyen mezőket szeretnénk látni. Ehhez a megoldáshoz importáljuk a employeecontroller.js fájlban a Rank modellt. import Rank from '../models/rank.js' //... const employees = await Employee.findAll({ include: { model: Rank, attributes: ['name'] } }) ===== Lehetséges kimenet ===== { "success": true, "data": [ { "id": 1, "name": "Erős István", "city": "Szeged", "salary": 395, "rankId": 1, "createdAt": "2025-07-28T09:15:14.714Z", "updatedAt": "2025-07-28T09:15:14.714Z", "rank": { "name": "fejlesztő" } }, { "id": 2, "name": "Tápos István", "city": "Szolnok", "salary": 392, "rankId": 2, "createdAt": "2025-07-28T09:15:22.634Z", "updatedAt": "2025-07-28T09:15:22.634Z", "rank": { "name": "tesztelő" } } ] }