Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Pegar um atributo (nome) da chave estrangeira

Olá, estava implementando boa parte do código de certa forma igual, só mudando as nomenclaturas e tudo mais .. Mas acredito que essa minha dúvida não foi explicitamente esclarecida durante as aulas .. Por exemplo, na tabela de matriculas, la tem a chave que é o id do aluno, como eu faria pra exibir uma tabela, com itens da matricula, mas no campo de id_aluno, eu exibisse o nome dele?

5 respostas

Oi Mario, neste caso, você faz uso do include, informando que quer adicionar o aluno na consulta ao banco de dados. Um rascunho poderia ser algo assim:

const matriculas = Matricula.findAll({ include: Aluno });

Para exibir então o nome do primeiro aluno com sua matrícula, poderia ser algo como:

console.log(matriculas[0].id);
console.log(matriculas[0].aluno.nome);

Fez sentido pra você?

Não está funcionando, aparece " Aluno is undefined" , mesmo o método estar dentro do AlunosController

static async pegaTodasAsMatriculas(req, res) {
    try {
      const todasAsMatriculas= await database.Matriculas.findAll({ include: Aluno})
      return res.status(200).json(todasAsMatriculas)
    } catch (error) {
      return res.status(500).json(error.message)
    }
  }

o que falta na implementação?

Para a referência Aluno estar dando undefined, suspeito que você não fez o import/require dele no arquivo atual, verifica isso.

solução!

Consegui fazer! Muito obrigado! Não era o import, pois o código estava no controlador do aluno mesmo .. Foi apenas fazer assim:

{ include : database.Alunos }

Mas me surgiu outra dúvida .. se eu quiser usar mais de um include, por exemplo Professores?

  • edit
    { include: [
     database.Alunos,
     database.Professores
         ]
    }
    *edit Este está funcionando...

Isso mesmo Mario, para join que quiser fazer, mais um valor terá que ser adicionado no include