Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Problema ao dar Update no produto

Finalizando o Curso Go: Crie uma aplicação Web, tive problema no ultimo capítulo do curso, no update do produto.

Primeiro problema que tive estava me dizendo que havia um problema com a conversão de dados do preço e da quantidade dizendo que o valor recebido era "", depois de tentar arrumar pararam de ocorrer erros no código mas não ocorre a atualização no banco de dados, a página web funciona normalmente, mas não ocorre atualização do produto nem ná página web nem no Postgre.

Link do repositório no GitHub: https://github.com/GuilhermeMViana/Web-Crud

Será que alguém pode saber qual o problema?

6 respostas

Olá, Guilherme! Tudo bem com você?

Vou sugerir algumas possíveis soluções para o seu problema:

  1. Verifique se os campos de preço e quantidade estão sendo preenchidos corretamente antes de enviar o formulário de atualização. Se esses campos estiverem vazios, eles serão convertidos para "" (string vazia), o que pode causar problemas na hora de atualizar o banco de dados.

  2. Verifique se a função de atualização está sendo chamada corretamente. Às vezes, pode ser que a função não esteja sendo chamada, ou que esteja sendo chamada, mas os dados não estejam sendo passados corretamente.

  3. Verifique se a conexão com o banco de dados está funcionando corretamente. Se a conexão não estiver funcionando, a atualização não será realizada.

  4. Verifique se a query SQL de atualização está correta. Se a query estiver errada, a atualização não será realizada.

  5. Verifique se o banco de dados está aceitando atualizações. Às vezes, pode ser que o banco de dados esteja configurado para não aceitar atualizações.

Espero que essas sugestões possam te ajudar a resolver o problema. Lembre-se, é sempre uma boa ideia testar cada uma dessas possibilidades separadamente, para que você possa identificar exatamente onde está o problema.

Abraços e bons estudos!

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

Olá, Armando! Tudo bem sim e com você?

Obrigado pela disponibilidade de me responder.

Eu estava tendo esse problema no começo, depois reescrevi o código e parou de dar erros no código.

Fiz os teste com as outras funções do banco de dados como criar produto e excluir e estão funcionando normalmente, peguei como exemplo o código dessas outras funções de conexão no banco e de conversão dos dados e "aparentemente" está tudo certo.

Tentei até dar um ctrl+c ctrl+v no código do professor e ainda assim não estou conseguindo fazer essa parte do update.

Nunca tinha usado SQL e nem PostgreSQL, pode ser alguma configuração no meu banco? Como posso verificar se está liberado para atualização?

Obrigado.

Opa, Guilherme, bom dia! Peço desculpa pela demora em respondê-lo.

Com base na estrutura do projeto, esse problema no update não deve estar relacionado com configurações no banco de dados, mas sim nas configurações que você estabeleceu nos seus métodos e na chamado do mesmo na página HTML.

Logo, caso ainda não tenha resolvido essa situação, peço que compartilhe comigo todos os arquivos do seu projeto, via GitHub ou Drive do Google.

Fico no aguardo e à disposição

Boa tarde, Armando! Tudo bem?

Acabei não vendo a sua resposta antes, por acabar não reparando nas notificações.

O projeto está nesse link: https://github.com/GuilhermeMViana/Web-Crud

Acabei não conseguindo encontrar o erro, se você conseguisse dar uma olhada para ver se sabe onde está o erro me ajudaria muito.

Obrigado.

solução!

Opa, Guilherme! Peço desculpa pela demora em respondê-lo.

Depois ficar um tempinho procurando onde estava o problema, enfim o encontrei!

O problema está no arquivo "product.go" da pasta "modules", mais precisamente no método EditProduct. Nele criamos uma variável chamada attProduct ela será responsável por atualizar o produto, contudo, quando você realizou a atribuição dos novos valores para ela, você esqueceu de passar o id. O código corrigido ficará assim:

func EditProduct(productId string) Product {
    db := database.DatabaseConnect()

    dbProduct, err := db.Query("select * from produtos where id=$1", productId)

    if err != nil {
        panic(err.Error())
    }

    attProduct := Product{}

    for dbProduct.Next() {
        var id, quantity int
        var name, description string
        var price float64

        err = dbProduct.Scan(&id, &name, &description, &price, &quantity)

        if err != nil {
            panic(err.Error())
        }
        attProduct.Id = id
        attProduct.Name = name
        attProduct.Description = description
        attProduct.Price = price
        attProduct.Quantity = quantity
    }
    defer db.Close()

    return attProduct
}

A adição que fiz foi o trecho attProduct.Id = id.

Espero ter ajudado!

Olá, Armando! Tudo bem?

Muito obrigado pela ajuda.