Observei que poderia ter inconsistência nos dados, então resolvi criar algumas validações para evitar isso no sistema.
Por exemplo, cadastrar uma turma com um id de um docente que não existe, ou cadastrar com um id de um nível que não existe no banco.
const classSent = req.body;
const { teacher_id, level_id } = classSent;
const teacherFound = await Person.findOne({
where: { id: teacher_id, role: "docente" },
});
const levelFound = await Level.findOne({ where: { id: level_id } });
const errors = ClassController._validations(teacherFound, levelFound);
if (errors.length > 0) return res.status(404).json(errors);
Método _validations
static _validations(teacherFound, levelFound) {
let errors = [];
if (!teacherFound) {
errors.push({
param: "teacher_id",
message: "Não é um professor ou não está cadastrado no sistema.",
});
}
if (!levelFound) {
errors.push({
param: "level_id",
message: "Nível não está cadastrado no sistema.",
});
}
return errors;
}