Сохранение дополнительных данных с помощью GoLang - PullRequest
0 голосов
/ 10 октября 2018

Поэтому я использую Go Lang 1.10.3 с платформой Echo с Gorm и Postgres в качестве базы данных.

У меня есть три таблицы / структуры, Profile, Addresses и Profile_addresses

Структура выглядит следующим образом:

Профиль

type Profile struct {
  gorm.Model
  Company string `gorm:"size:255" json:"company"`
  AddedDate time.Time `gorm:"type:date" json:"date_added"`
  ProfileAddresses []ProfileAddress `gorm:"foreignkey:profile_fk" json:"address_id"`
}

Адрес

type Address struct {
  gorm.Model 
  AddressLine1 string `gorm:"size:255" json:"line1"`
  AddressLine2 string `gorm:"size:255" json:"line2"`
  AddressLine3 string `gorm:"size:255" json:"line3"`
  City string `gorm:"size:200" json:"city"`
  Country string `gorm:"size:255" json:"country"`
  Postcode string `gorm:"size:12" json:"postcode"`
  ProfileAddresses []ProfileAddress `gorm:"foreignkey:address_fk"`
}

И Адрес профиля

type ProfileAddress struct {
  gorm.Model
  Archive bool `json:"archive"`

  Profile Profile
  Address Address
  AddressFK int`gorm:"ForeignKey:id"`
  ProfileFK int`gorm:"ForeignKey:id"`
}

Все эти таблицы сделаны хорошо, ноСейчас я пытаюсь сохранить идентификатор адреса в таблице адресов профиля при создании нового профиля.Отправка данных в /profile/add (с почтальоном), включая следующие данные

{
  "company": "testing-000001",
  "date_added": "3051-11-09T00:00:00+00:00",
  "address_id": 3
}

Теперь я могу сохранить новый профиль и новый адрес, но не сохранить эти данные.Я только что добавил опцию json:"address_id"` в конец Profile struct, но это не сработало.

Я настроил это так, поскольку у одного профиля может быть много адресов, поэтому необходимосвязанная таблица со всеми адресными идентификаторами.Я уверен, что смогу сделать это в два этапа, например, сохранить профиль, затем сохранить адреса, которые я хочу добавить в этот профиль, но я бы хотел, чтобы это работало.Мне также не нужно создавать новый адрес, они уже были бы добавлены в систему.

Так что же я делаю не так?

Любая помощь приветствуется.

Спасибо,

1 Ответ

0 голосов
/ 12 октября 2018

Вот как я заставил это работать, пожалуйста, дайте мне знать, если это не правильно или есть лучший способ.

Итак, я добавил структуру Profile в оболочку / вложенную структуру,вот так:

type ProfileWrapper struct {
  gorm.Model
  ProfileData Profile
  AddressID int `json:"address_id"`
}

Итак, я изменил / обновил данные json, которые я отправлял в эту структуру, следующим образом:

{
  "ProfileData": {
      "company": "testing-with-add-0001",
      "date_added": "9067-11-09T00:00:00+00:00"
  },
  "address_id": 3
}

Итак, чтобы сохранить профиль, я сделал это,

db.Create( &p.ProfileData )

Затем я создал новую структуру для информации об адресе профиля, которая будет создана / добавлена ​​следующим образом:

pd := structs.ProfileAddress{AddressFK: p.AddressID, ProfileFK: profileID}

db.Create( &pd )

Не уверен, что это лучший способ сделать это, но этопохоже на работу.Если это не так, пожалуйста, дайте мне знать.

Спасибо.

...