Извлечение произвольных данных во вложенный объект с помощью ORM

Я пытаюсь разработать api in go, чтобы позволить пользователю указать произвольную структуру данных, и легко настроить конечные точки, которые выполняют операции CRUD в автоматически сгенерированной базе данных postgres, на основе структуры, которую они определяют.

На данный момент я использую gorm и могу автоматически создавать базу данных на основе определенного пользователем набора структур, поддерживающих все типы отношений (имеет один, один ко многим и т. Д.). Я также могу вставить в сгенерированную базу данных, когда JSON отправляется через конечные точки.

Проблема, которую я обнаружил, это когда я пытаюсь получить данные. Кажется, что там, где не хватает многих go ORM, сопоставление данных из всех таблиц обратно во вложенные структуры родительской структуры.

Например, если пользователь определяет:

type Member struct {
    ID          string      
    FirstName   string      
    Hometown    Hometown    `gorm:"ForeignKey:MemberRefer"`
}

type Hometown struct {
    ID              string
    City            string
    Province        string
    MemberRefer     string
}

База данных создает таблицы:

члены

  • Я бы
  • имя

родные города

  • Я бы
  • город
  • провинция
  • member_refer

Однако при извлечении данных все, что отображается обратно:

{
    "id": "dc2bb591-506f-40a5-a141-bdc0c8410ba1",
    "name": "Kevin Krishna",
    "hometown": {
        "id": "",
        "city": "",
        "province": ""
    }
}

Кто-нибудь знает о го орме, который поддерживает такое поведение?

Спасибо

1 ответ

Решение

5 секунд поиска Google показал мне ответ:

Предварительная загрузка ассоциаций

Теперь, когда вы действительно правильно их связали, вы можете.Preload() получить нужный вложенный объект: db.Preload("GoogleAccount").First(&user)

Получить вложенный объект в структуре в gorm

https://www.google.com/search?q=gorm+nested+struct+golang

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