假设我有一个名为PEOPLE
的表,它存储Person
行。但是,Person
包含切片,结构和结构切片,即 Superpower ,< em> Vehicle 和 FriendList 字段。
如何使用 Golang 在 Postgresql 中存储和检索这些值?我找不到任何与此问题相关的实用教程。使用自定义数据类型,JSON或ORM方法,或构建自定义函数来处理这些?很多意见,但我仍然无法找到解决这个问题的工作方法,请帮忙。
我正在使用Ozzo-dbx,但欢迎任何解决方案。
有人可以提供一个有效的例子吗?很抱歉,如果这个新手问题让你烦恼,但我已经尝试了几天,并且一直都在失败......(T_T)
type Transport struct {
Brand string
Size int
}
type Friend struct {
Name string
IsProgrammer bool
}
type Person struct {
ID int
Name string
Superpower []string //slice
Vehicle Transport //struct
FriendList []Friend //slice of struct
}
答案 0 :(得分:1)
在大多数情况下,您应该为Superpowers,Vehicles和Friends创建单独的表格。
如果其中一个表与People表之间的关系是多对一或一对一,则可以向其添加外键。如果关系是多对多的,你应该创建一个链接表来保存相关记录的fkeys。
要存储数据,您可以使用简单的SQL查询字符串和database/sql
单独插入/更新每条记录。
之后,您可以创建表视图,将每个人所需的数据聚合到一行中,这样就不会使用复杂的SQL字符串污染Go代码。然后在Go中定义简单的SQL选择查询字符串,并使用database/sql
执行它们。