У меня есть структура Go, которая содержит фрагмент строк, которые я хотел бы сохранить как объект jsonB в Postgres с GORM.
Я нашел решение, которое требует использования конкретного типа GORM (postgres.Jsonb), которого я бы хотел избежать.
Когда я пытаюсь запустить AutoMigrate со срезом в моей модели, он паникует и не запускается, хотя, когда я оборачиваю этот срез в структуру (что я в порядке), он будет работать без ошибок, но не создаст столбец в postgres.
type User struct {
gorm.Model
Data []string `sql:"type:"jsonb"; json:"data"`
} //Panics
type User struct {
gorm.Model
Data struct {
NestedData []string
} `sql:"type:"jsonb"; json:"data"`
} //Doesn't crash but doesn't create my column
Кто-нибудь мог манипулировать jsonb с помощью GORM без использования типа postgres.Jsonb в моделях?
Определите новый тип:
И реализуйте на них интерфейсы
Valuer
иScanner
, что позволяет преобразовать поле в значение для базы данных и сканировать обратно в поле соответственно:Затем вы можете определить свое поле в своей модели следующим образом:
Использование базового типа
map[string]interface{}
тоже неплохо, так как вы можете _7 _ / _ 8_ любой JSON в / из него.Это все еще работает? Я пробовал это и продолжаю получать
panic: invalid sql type SomeMapType (map)
У меня есть связанный с этим вопрос: stackoverflow.com/questions/63289749/ — person Le G; 07.08.2020Может быть:
Я получаю эту ошибку: тег поля структуры
sql:"type:"jsonb";json:"studs"
несовместим с отражением.StructTag.Get: пары ключ: значение, не разделенные пробеламиstructtag — person Le G; 08.11.2020