No curso, a implementação do método de atualização de registros não retorna os dados atualizados, o que pode ser um problema em algumas situações onde precisamos confirmar ou manipular os novos valores.
Implementação original:
async atualizaRegistro(dadosAtualizados, id) {
const listadeRegistrosAtualizados = dataSource[this.model].update(
dadosAtualizados,
{
where: { id: id },
}
);
if (listadeRegistrosAtualizados[0] === 0) {
return false;
}
return true;
}
Problema
Essa abordagem apenas retorna true ou false, indicando se houve ou não atualização, mas não retorna os dados do registro atualizado. Isso pode ser inconveniente caso precisemos confirmar as mudanças aplicadas.
Sugestão de Melhoria
Para solucionar esse problema, podemos modificar o método para buscar o registro antes da atualização e retornar os dados já modificados. Abaixo está minha sugestão de implementação no Service e Controller:
Services:
async atualizaRegistro(dadosAtualizados, id) {
const registroEncontrado = await this.pegaUmRegistroPorId(id);
if (!registroEncontrado) {
return false;
}
return await registroEncontrado.update(dadosAtualizados);
}
Controller:
async atualiza(req, res) {
const { id } = req.params;
const dadosAtualizados = req.body;
try {
//isUpdated
const registroAtualizado = await this.entidadeService.atualizaRegistro(
dadosAtualizados,
Number(id)
);
if (!registroAtualizado) {
return res
.status(400)
.json({ mensagem: "registro não foi atualizado" });
}
return res.status(200).json(registroAtualizado);
} catch (erro) {
console.log(erro);
}
}
Vantagens
- Retorna o registro atualizado, permitindo acesso imediato aos novos dados.
- Evita a necessidade de uma nova busca após a atualização.