AnswerBun.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!

Related Questions

Como desabilitar o required quando o seu input não estiver visível

2  Asked on January 17, 2021 by bruno-henrique

     

Evento onchange do datepicker em HTML5

1  Asked on January 16, 2021 by rodrigo-santos

       

Programa usando malloc duas vezes

3  Asked on January 16, 2021 by gabriel-vinicius

     

Como ocultar informações sensíveis no Django?

3  Asked on January 15, 2021 by vinicius-bussola

         

Flexbox deixa as imagens redimensionadas

1  Asked on January 15, 2021 by niko

   

Posso utilizar um iPhone para testar um app Xamarin?

3  Asked on January 14, 2021 by gustavo-oliveira

         

Alterar posição do elemento com JavaScript

1  Asked on January 13, 2021 by vernica-emschermann

   

Consumir API REST de um endpoint HTTPS com Angular 10 (CORS)

0  Asked on January 13, 2021 by phelipe-chiarelli

         

API REST Consultando outra API

1  Asked on January 13, 2021 by letcia-helena

       

Cliente e Servidor socket com Indy

1  Asked on January 12, 2021 by tonico-bittencourt

     

Como passar uma struct alocada dinamicamente para uma função em C?

1  Asked on January 12, 2021 by larissa-benevides-vieira

         

Como testar exports de um package?

1  Asked on January 11, 2021 by felipe-avelar

   

Somando varios inputs com mesmo id jquery ou javaScript

1  Asked on January 9, 2021 by joao_vitor

     

Solução simples para algoritmo de Fibonacci

6  Asked on January 9, 2021 by joo-laurent

       

“min()” com dois parâmetros

1  Asked on January 8, 2021 by wesley

   

Solr, Lucene e ElasticSearch quais as diferenças? Quando usar um ou outro?

1  Asked on January 7, 2021 by guilherme-de-jesus-santos

       

Ask a Question

Get help from others!

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