登录
首页 >  Golang >  Go问答

利用 ORM 将数据嵌套在对象中查询

来源:stackoverflow

时间:2024-03-22 09:57:42 251浏览 收藏

在使用 Go 语言开发 API 时,如何将数据嵌套在对象中进行查询是一个常见问题。当使用 GORM 等 ORM 时,默认情况下,从数据库中检索的数据不会自动映射到嵌套结构中。为了解决这个问题,可以使用 GORM 的 `Preload()` 方法,它允许在查询时预加载关联数据,从而将所有相关数据映射到父结构的嵌套结构中。

问题内容

我正在尝试在 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
  • 名字

家乡

  • id
  • 城市
  • member_refer

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

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

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

谢谢


解决方案


5秒谷歌搜索告诉我答案:

预加载关联

现在您实际上已经将它们正确关联了,您可以 .Preload() 获取您想要的嵌套对象: db.Preload("GoogleAccount").First(&user)

Get nested object in structure in gorm

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

本篇关于《利用 ORM 将数据嵌套在对象中查询》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>