TransWikia.com

Relacionamento entre tabelas com Sequelize

Stack Overflow em Português Asked by Vitor Cordeiro on January 2, 2022

Tenho duas tabelas, uma de Colaborador e outra de Setor. Um colaborador pertence a um setor e um setor contém vários colaboradores. Consegui criar as tabelas, porém, não sei como fazer o relacionamento entre as tabelas com o Sequelize.

Vi alguns tutoriais usando belongsTo e hasToMany, porém fico confuso, pois eu preciso especificar o campo da tabela que será referenciado não?

Aqui estão as tabelas

Tabela Setor:

const Sequelize = require('sequelize');
const sequelize = require('../config/db');

const setor = sequelize.define('setor', {

    codigo: {
        type: Sequelize.INTEGER,
        autoIncrement: true,
        primaryKey: true
    },

    nome: {
        type: Sequelize.STRING,
        allowNull: false
    },

});

Tabela de Colaborador:

const sequelize = require('../config/db');
const Sequelize = require('sequelize');


const Colaborador = sequelize.define('colaboradores', {

    codigo: {
        type: Sequelize.INTEGER,
        autoIncrement: true,
        primaryKey: true
    },

    nome: {
        type: Sequelize.STRING,
        allowNull: false
    },

    cargo: {
        type: Sequelize.STRING,
        allowNull: false
    },

    codigoSetor: {
        type: Sequelize.INTEGER,
        allowNull: false
    },

    email: {
        type: Sequelize.STRING,
        allowNull: false
    },

    senha:{
        type: Sequelize.STRING,
        allowNull: false
    },

    matricula: {
        type: Sequelize.STRING,
        allowNull: false
    }
})

One Answer

1 colaborador 'belongsTo' setor

1 setor 'hasMany' colaborador,

Na migration, você precisa informar qual campo vai ser a chave estrangeira! ex:

codigoSetor: {
    type: Sequelize.INTEGER,
    allowNull: false,
    references:{model: 'setor', key: 'codigo'}
    onUpdate:'CASCADE',
    onDelete:'CASCADE

}

e no model você precisa indicar a associação.

ex:

static associate(models){
   this.'hasMany ou belongsto'(model.Setor,{foreignKey:'codigoSetor', as:'nome da assossiação'})
}

Tem um vídeo da RocketSeat esta bem explicadinho lá! SQL no Node.Js com Sequelize

Answered by Diego Schinemann on January 2, 2022

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP