1
resposta

[Sugestão] Atualização de registro com id inexiste

Testando o código desenvolvido na aula, a atualização de um registro com id válido funcionou normalmente. Porém ao tentar atualizar um id inexistente obtive como retorno também a mensagem de sucesso (embora nenhum registro tenha sido modificado, conforme o esperado).

Para tentar entender o que estava ocorrendo, fiz um console.log das variáveis "listaDeRegistrosAtualizados" e "foiAtualizado", e repeti o teste com id inexistente. O console mostrou que a primeira variável recebeu uma Promisse pendente, e a segunda recebeu true, já que a execução não entrou no

if(listaDeRegistrosAtualizados[0] ===0)

Para resolver isso, adicionei um await antes da execução do método update:

const listadeRegistrosAtualizados = await dataSource[this.model].update(dadosAtualizados, {
      where: { id: id }
    });

Com isso, o código se comportou conforme o esperado, devolvendo a mensagem 'registro não foi atualizado' quando testei um id inexistente.

1 resposta

Oi Vinícius, tudo bem?

Você está absolutamente correto. O método update do Sequelize retorna uma Promise, que é um objeto usado para processamento assíncrono. Uma Promise representa um valor que pode estar disponível agora, no futuro, ou nunca. Portanto, é necessário usar await para esperar a Promise ser resolvida antes de continuar com o código.

No seu caso, ao adicionar await antes do método update, você está garantindo que o JavaScript espere a Promise ser resolvida antes de atribuir o resultado à variável listaDeRegistrosAtualizados. Isso significa que o valor de listaDeRegistrosAtualizados será o valor resolvido da Promise, e não a Promise em si.

Muito obrigada por compartilhar sua sugestão.

Um abraço e bons estudos.