1
resposta

Adicionei algumas verificações no projeto

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;
  }
1 resposta

Oi Lucas, gostei da ideia, realmente, faz muito sentido. Porém, não pude deixar de observar que você usou underline como indicação que é um método privado do controller, claro, é uma convensão, mesmo assim, você quebrou a convenção quando chamou a função pela classe diretamente. Isso quer dizer alguma coisa.

Veja, se a validação faz parte do controller de class, por que essas consultas não são feitas lá dentro e você apenas retorna através de algum método publico, os erros que aconteceram?