1
resposta

Dúvida de relacionamento

Gostaria de saber como faço para buscar os dados de uma terceira tabela. No seguinte esquema:

Pessoa { id: integer, nome: string }

Matricula { id: integer, nome: string, pessoaId: integer, professorId: integer }

Professor { id: integer, nome: string }

Qual relacionamento devo fazer para que no findAll() eu consiga exibir o retorno com o aluno, matricula e professor? Qual informação eu coloco no include do findAll()?

Obrigado!

1 resposta

Boa tarde Jone, tudo certo?

Então Jone, eu creio que não seja possível puxar todas essas informações de modelos diferentes com apenas uma chamada de findAll(). Aqui vai uma explicação minha de porquê acho isso:

Os métodos de consultas (findAll(), findOne() e etc) estão associados à modelos. Ou seja, de forma resumida, cada query está associada à uma tabela em específico. Eu acho muito interessante como que a documentação do Sequelize explica essas consultas.

Mas isso não quer dizer que não seja possível levantar esses dados da forma que você exemplificou. Existe uma funcionalidade chamada de escopo de associação (ou association scope) que te permite fazer uma busca acessando dados de outros modelos que tenham relação com o modelo que você está acessando. Como utilizar essas funcionalidades e fazer os chamados mixins são abordados na Aula 3 do Curso de ORM com NodeJS: Avançando nas funcionalidades do Sequelize, então também deixo a recomendação de conferir o curso. Caso reste alguma dúvida após essa aula basta criar outro tópico e ficaremos felizes em contribuir com mais informações.

Espero ter ajudado e bons estudos!