2
respostas

erro ao atualizar matriculas. USANDO MYSQL

Ola estou usando o mysql e esta dando esse erro ao atualizar matriculas. No postam retorna que a matricula foi atualizada mas nao atualiza no db e no terminal da esse erro

Executing (default): SELECT id, status, createdAt, updatedAt, deletedAt, curso_id, estudante_id FROM matriculas AS Matricula WHERE (Matricula.deletedAt IS NULL AND (Matricula.status = 'matriculado' AND Matricula.estudante_id = 3)); C:\Users\go210\OneDrive\Área de Trabalho\web\ApiRest-node\4-ORM-Sequelize-2\arquivos\aula-5\node_modules\sequelize\lib\dialects\abstract\query.js:264 const fmt = (${connection.uuid || "default"}): ${sql}${logParameter}; ^

TypeError: Cannot read properties of undefined (reading 'uuid') at Query._logQuery (C:\Users\go210\OneDrive\Área de Trabalho\web\ApiRest-node\4-ORM-Sequelize-2\arquivos\aula-5\node_modules\sequelize\lib\dialects\abstract\query.js:264:32) at Query.run (C:\Users\go210\OneDrive\Área de Trabalho\web\ApiRest-node\4-ORM-Sequelize-2\arquivos\aula-5\node_modules\sequelize\lib\dialects\mysql\query.js:47:27) at C:\Users\go210\OneDrive\Área de Trabalho\web\ApiRest-node\4-ORM-Sequelize-2\arquivos\aula-5\node_modules\sequelize\lib\sequelize.js:315:28 at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async MySQLQueryInterface.bulkUpdate (C:\Users\go210\OneDrive\Área de Trabalho\web\ApiRest-node\4-ORM-Sequelize-2\arquivos\aula-5\node_modules\sequelize\lib\dialects\abstract\query-interface.js:366:12) at async Matricula.update (C:\Users\go210\OneDrive\Área de Trabalho\web\ApiRest-node\4-ORM-Sequelize-2\arquivos\aula-5\node_modules\sequelize\lib\model.js:2010:28)

Node.js v20.16.0 [nodemon] app crashed - waiting for file changes before starting...

2 respostas

Olá, Guilherme! Tudo bem?

Pelo que você descreveu, parece que o erro está relacionado ao Sequelize não conseguir acessar a propriedade uuid da conexão. Isso pode ocorrer por uma série de motivos, mas vamos tentar algumas soluções práticas para resolver o problema.

  1. Configuração da conexão: verifique se a configuração da sua conexão com o MySQL está correta. Um exemplo de configuração básica seria:

    const { Sequelize } = require('sequelize');
    
    const sequelize = new Sequelize('database', 'username', 'password', {
      host: 'localhost',
      dialect: 'mysql'
    });
    
  2. Atualização de Matrícula: certifique-se de que a lógica de atualização está correta. Um exemplo básico de atualização seria:

    const Matricula = require('./models/matricula'); // ajuste o caminho conforme necessário
    
    async function atualizarMatricula(id, novosDados) {
      try {
        const [updated] = await Matricula.update(novosDados, {
          where: { id: id }
        });
        if (updated) {
          console.log('Matrícula atualizada com sucesso');
        } else {
          console.log('Matrícula não encontrada');
        }
      } catch (error) {
        console.error('Erro ao atualizar matrícula:', error);
      }
    }
    
    atualizarMatricula(3, { status: 'completado' }); // exemplo de chamada
    
  3. Verifique o modelo: verifique se o modelo Matricula está corretamente definido, incluindo todos os atributos e suas configurações.

    const { Model, DataTypes } = require('sequelize');
    const sequelize = require('../config/database'); // ajuste o caminho conforme necessário
    
    class Matricula extends Model {}
    
    Matricula.init({
      id: {
        type: DataTypes.INTEGER,
        primaryKey: true,
        autoIncrement: true
      },
      status: {
        type: DataTypes.STRING
      },
      createdAt: {
        type: DataTypes.DATE
      },
      updatedAt: {
        type: DataTypes.DATE
      },
      deletedAt: {
        type: DataTypes.DATE
      },
      curso_id: {
        type: DataTypes.INTEGER
      },
      estudante_id: {
        type: DataTypes.INTEGER
      }
    }, {
      sequelize,
      modelName: 'Matricula',
      paranoid: true // para utilizar deletedAt
    });
    
    module.exports = Matricula;
    

Caso você não solucione o problema usando essas sugestões, recomendo que compartilhe comigo todo o seu projeto para que eu realize testes. Use o GitHub ou Drive do Google como meio de envio.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Tinha que colocar o método dentro de uma transação