Olá Ademar, tudo bom?
Para gerar um relatório com informações de várias tabelas usando o Sequelize, você pode usar associações (associations) para fazer junções (joins) entre as tabelas. No seu caso, parece que você precisa juntar as tabelas de Aluno, Curso e Docente.
Primeiro, você deve garantir que as associações entre os modelos estão definidas corretamente. Aqui está um exemplo básico de como você poderia definir essas associações:
// Modelo Aluno
const Aluno = sequelize.define('Aluno', {
nome: {
type: Sequelize.STRING,
allowNull: false
}
});
// Modelo Curso
const Curso = sequelize.define('Curso', {
nome: {
type: Sequelize.STRING,
allowNull: false
}
});
// Modelo Docente
const Docente = sequelize.define('Docente', {
nome: {
type: Sequelize.STRING,
allowNull: false
}
});
// Definindo as associações
Aluno.belongsTo(Curso); // Um aluno pertence a um curso
Curso.hasMany(Aluno); // Um curso tem muitos alunos
Curso.belongsTo(Docente); // Um curso pertence a um docente
Docente.hasMany(Curso); // Um docente tem muitos cursos
Depois de definir as associações, você pode usar o método findAll
com a opção include
para fazer as junções e obter os dados necessários para o seu relatório. Aqui está um exemplo de como você pode fazer isso:
Aluno.findAll({
attributes: ['nome'],
include: [
{
model: Curso,
attributes: ['nome'],
include: [
{
model: Docente,
attributes: ['nome']
}
]
}
]
}).then(alunos => {
// Processar os dados para o relatório
alunos.forEach(aluno => {
console.log(`Aluno: ${aluno.nome}`);
console.log(`Curso: ${aluno.Curso.nome}`);
console.log(`Docente: ${aluno.Curso.Docente.nome}`);
});
}).catch(error => {
console.error('Erro ao gerar relatório:', error);
});
Neste exemplo, estamos buscando todos os alunos e incluindo os dados do curso e do docente associados. O Sequelize irá gerar as junções SQL necessárias para obter essas informações.
Espero ter ajudado e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.