Извлечение произвольных данных во вложенный объект с помощью ORM - PullRequest
0 голосов
/ 16 ноября 2018

Я пытаюсь разработать API на ходу, чтобы позволить пользователю указать произвольную структуру данных и легко настроить конечные точки, которые выполняют операции 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
}

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

Пользователи

  • ID
  • first_name

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

  • id
  • город
  • провинция
  • member_refer

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

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

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

Спасибо

1 Ответ

0 голосов
/ 16 ноября 2018

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

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

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

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

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

...