Невозможно обновить столбец 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"}}"

0 ответов

Другие вопросы по тегам