我只是对go-pg有所了解,在使用PostgreSQL DB的JSONB功能时遇到了一些问题。
我将模型结构定义为:
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
}
在化学结构中-通过使用ListingDetails字段上的标签sql:",array"
-我的理解是,这应该映射到目标表中的jsonb列。使用go-pg的CreateTable-通过listing_details jsonb列创建化学品表-因此在这方面一切都很好。
但是,我似乎无法成功更新此字段(在数据库中)。当我最初在数据库中创建化学记录时-没有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"}}"