Postgresql 使用ORM将任意数据检索到嵌套对象中

Postgresql 使用ORM将任意数据检索到嵌套对象中,postgresql,go,go-gorm,sqlx,go-pg,Postgresql,Go,Go Gorm,Sqlx,Go Pg,我正试图在go中开发一个api,允许用户指定任意数据结构,并根据定义的结构轻松设置在自动生成的postgres数据库上执行CRUD操作的端点 目前,我一直在使用gorm,并且能够基于用户定义的结构集自动生成一个数据库,该结构支持所有类型的关系(具有一对多、一对多等)。当JSON通过端点发送进来时,我还能够插入到生成的数据库中 我发现的问题是当我试图接收数据时。许多go ORM的不足之处似乎是将所有表中的数据映射回父结构的嵌套结构中 例如,如果用户定义: type Member struct {

我正试图在go中开发一个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": "dc2bb591-506f-40a5-a141-bdc0c8410ba1",
    "name": "Kevin Krishna",
    "hometown": {
        "id": "",
        "city": "",
        "province": ""
    }
}
有人知道有一种go orm支持这种行为吗


谢谢

5秒谷歌搜索向我展示了答案:

预加载关联

现在您已经将它们正确地关联起来了,您可以.Preload()获取所需的嵌套对象: 数据库预加载(“GoogleAccount”)。第一个(&用户)


非常感谢。是的,当我之前进行研究时,我看到“gorm预加载不支持连接”,并将其解释为连接多个表不起作用。