1
resposta

Erro em transação

Estou me deparando com esse erro abaixo, porém já revisei o código com o que está no material do curso, e ainda não encontrei nenhuma diferença na forma que e chamado os métodos de como está no código final do curso, será que poderia isso ser algum problema de versão? imagem do erroO repositório contendo o código e este: https://github.com/jeffersoncsilva/alura-node-sequelize

1 resposta

Bom dia,

O erro fala que você está tentando usar uma transação que já foi encerrada (commit has been called on this transaction), e isso acontece quando:

  • Você tenta executar uma nova query depois do transaction.commit() ou transaction.rollback().
  • Ou há awaits fora de ordem dentro da transação, e o controle da transação se perde.

Soluções possíveis:

  1. Verifique se todas as queries estão dentro do bloco transaction e antes do commit().
  2. Evite await fora da ordem ou dentro de callbacks, como then() ou funções aninhadas.
  3. Atualize o Sequelize para uma versão compatível com o curso (caso esteja usando uma mais recente).
  4. Use transaction-managed corretamente, por exemplo:
await sequelize.transaction(async (t) => {
  await Pessoa.update(..., { transaction: t });
});

Se o curso usa uma versão mais antiga do Sequelize, use a mesma versão para evitar problemas com mudanças de comportamento.