Невозможно обновить столбец jsonb (т.е. подмассив)
Я просто промочил ноги с go-pg, и у меня возникли некоторые проблемы с использованием возможностей JSONB в PostgreSQL DB.
Я определил свои модельные структуры как:
type Chemical struct {
Id int
ChemicalName string
ListingDetails []ListingDetail `sql:",array"`
ParentChemical *Chemical `pg:"fk_parent_chemical_id"`
ParentChemicalId int
}
type ListingDetail struct {
TypeOfToxicity string
ListingMechanism string
CasNo string
ListedDate time.Time
SafeHarborInfo string
}
В химической структуре - с помощью тега sql:",array"
в поле ListingDetails - насколько я понимаю, это должно быть сопоставлено столбцу jsonb в таблице назначения. С помощью CreateTable go-pg - таблица химических веществ создается со столбцом jsonb перечисление_details - так что все хорошо в этом отношении.
Тем не менее, я не могу обновить это поле (в БД) успешно. Когда я изначально создаю химическую запись в базе данных - там нет ListingInfos - я возвращаюсь, чтобы обновить их позже. Ниже приведен фрагмент, показывающий, как я это делаю.
detail := models.ListingDetail{}
detail.TypeOfToxicity = strings.TrimSpace(row[1])
detail.ListingMechanism = strings.TrimSpace(row[2])
detail.CasNo = strings.TrimSpace(row[3])
detail.SafeHarborInfo = strings.TrimSpace(row[5])
chemical.ListingDetails = append(chemical.ListingDetails, detail)
err = configuration.Database.Update(&chemical)
if err != nil {
panic(err)
}
Но я всегда получаю сообщение об ошибке, показанное ниже. Что я делаю неправильно??
panic: ERROR #22P02 malformed array literal: "{{"TypeOfToxicity":"cancer","ListingMechanism":"AB","CasNo":"26148-68-5","ListedDate":"1990-01-01T00:00:00Z","SafeHarborInfo":"2"}}"