使用 ORM 将任意数据检索到嵌套对象中
Retrieving arbitrary data into nested object with ORM
我正在尝试在 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
- first_name
家乡
- 编号
- 城市
- 省
- member_refer
但是,在检索数据时,映射回来的是:
{
"id": "dc2bb591-506f-40a5-a141-bdc0c8410ba1",
"name": "Kevin Krishna",
"hometown": {
"id": "",
"city": "",
"province": ""
}
}
有人知道支持这种行为的 go orm 吗?
谢谢
5 秒 google 搜索显示了我的答案:
Preloading associations
Now that you actually have them properly related, you can .Preload() get the nested object you want:
db.Preload("GoogleAccount").First(&user)
我正在尝试在 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
- first_name
家乡
- 编号
- 城市
- 省
- member_refer
但是,在检索数据时,映射回来的是:
{
"id": "dc2bb591-506f-40a5-a141-bdc0c8410ba1",
"name": "Kevin Krishna",
"hometown": {
"id": "",
"city": "",
"province": ""
}
}
有人知道支持这种行为的 go orm 吗?
谢谢
5 秒 google 搜索显示了我的答案:
Preloading associations
Now that you actually have them properly related, you can .Preload() get the nested object you want: db.Preload("GoogleAccount").First(&user)