Tartalomjegyzék

< Express

Express - Összekötés

Idegenkulcs megadása

A modellben:

Employee.belongsTo(Position, {foreignKey: 'positionId', targetKey: 'id'})

Az Employee modell teljes kódja:

app/models/employee.js
const { DataTypes } = require('sequelize')
const sequelize = require('../database/database')
const Position = require('../models/position')
 
const Employee = sequelize.define('Employee', {
    id: { 
        type: DataTypes.INTEGER,
        autoIncrement: true,
        primaryKey: true
    },
    name: { 
        type: DataTypes.STRING,  
        allowNull: false,
        validate: {
            notNull: true
        }
    },
    city: { type: DataTypes.STRING,  allowNull: true  },
    salary: { type: DataTypes.DOUBLE , defaultValue: 0 },
    positionId: { 
        type: DataTypes.INTEGER
    }
})
 
//Idegenkulcs:
Employee.belongsTo(Position, {foreignKey: 'positionId', targetKey: 'id'})
 
//A model és az adatbázis szinkronizálása, nem erőltetve.
sequelize.sync({
    force: false
})
module.exports = Employee

Lekérdezés

A kontrollerben egy lehetséges lekrédezés:

        const emps = await Employee.findAll({
 
            include: [{
                model: Position
            }]
        })

Lehetséges kimenet

{
    "data": [
        {
            "Position": {
                "createdAt": null,
                "id": 1,
                "name": "fejlesztő",
                "updatedAt": null
            },
            "city": "Hatvan",
            "createdAt": "2024-03-10T18:15:02.000Z",
            "id": 7,
            "name": "Csoda Béla",
            "positionId": 1,
            "salary": 394,
            "updatedAt": "2024-03-10T18:15:02.735Z"
        },
        {
            "Position": {
                "createdAt": null,
                "id": 1,
                "name": "fejlesztő",
                "updatedAt": null
            },
            "city": "Szolnok",
            "createdAt": "2024-03-10T18:15:28.000Z",
            "id": 8,
            "name": "Csík Ferenc",
            "positionId": 1,
            "salary": 392,
            "updatedAt": "2024-03-10T18:15:28.361Z"
        },
        {
            "Position": {
                "createdAt": null,
                "id": 2,
                "name": "tesztelő",
                "updatedAt": null
            },
            "city": "Szeged",
            "createdAt": "2024-03-10T18:15:54.000Z",
            "id": 9,
            "name": "Erős István",
            "positionId": 2,
            "salary": 397,
            "updatedAt": "2024-03-10T18:15:54.954Z"
        }
    ],
    "success": true
}