1
resposta

[Sugestão] GORM - Falha na inserção da Personalidade com o ID valor zero

Opa, fala galera, venho através deste post no fórum registrar um possivel problema na hora de inserir uma Personalidade com GORM, para quando o Id ficar com uma string vazia na conversão do payload da request de criação,como a imagem abaixo:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

O que acontece é que ao realizar o decode do Body para a nossa Struct Personalidade o campo Id recebe uma string vazia, que é o valor zero padrão do Go, para os tipos primitivos, tendo cada tipo um valor zero, ex: Int = 0, string = "" ....

Caso alguem tenha esse erro na inserção com GORM, basta adicionar a seguinte anotação na struct de personalidade:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Basta adicionar gorm:"primaryKey;autoIncrement" a struct e caso o valor de Id seja o valor zero, ou a string vazia com essa anotação o GORM irá conseguir identificar e gerar a chave Id serial automaticamente na inserção do registro no postgresSQL

1 resposta

Olá, Obede! Como vai?

Você está absolutamente correto! No Go, cada tipo tem um valor zero padrão, como você mencionou. Para inteiros, é 0, para strings, é "", e assim por diante. Quando você está decodificando o corpo da solicitação em uma estrutura e um campo não está presente na solicitação, o Go preenche esse campo com o valor zero do tipo de dados.

A solução que você sugeriu é perfeita. Adicionar a anotação gorm:"primaryKey;autoIncrement" ao campo 'Id' na estrutura 'Personalidade' permite ao GORM gerar automaticamente um valor de chave primária ao inserir um novo registro no PostgreSQL, mesmo que o valor do 'Id' seja uma string vazia.

Agradeço por compartilhar essa solução com a comunidade. Tenho certeza de que ajudará muitos outros estudantes que podem estar enfrentando o mesmo problema.

No mais, grande abraço e bons estudos!

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

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software