使用ORM

时间:2018-11-16 17:21:05

标签: postgresql go go-gorm sqlx go-pg

我正在尝试开发一个api,以允许用户指定任意数据结构,并根据他们定义的结构轻松地设置对自动生成的postgres数据库执行CRUD操作的端点。

目前,我一直在使用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
  • 名字

家乡

  • id
  • 城市
  • member_refer

但是,检索数据时,所有映射回的内容是:

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

有人知道支持这种行为的goor吗?

谢谢

1 个答案:

答案 0 :(得分:2)

5秒的Google搜索向我显示了答案:

  

预加载关联

     

现在您实际上已经正确地关联了它们,则可以.Preload()获得所需的嵌套对象:   db.Preload(“ GoogleAccount”)。First(&user)

Get nested object in structure in gorm

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