假设我有一个名为PEOPLE
的表,它存储Person
行。但是,Person
包含slice、struct 和slice of struct,即Superpower、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
}
最佳答案
在大多数情况下,您应该为 Superpowers、Vehicles 和 Friends 创建单独的表。
如果其中一个表与 People 表之间的关系是多对一或一对一的关系,您可以向它们添加外键。如果关系是多对多关系,您应该创建一个链接表来保存相关记录的 fkeys。
要存储数据,您可以使用简单的 SQL 查询字符串和 database/sql
分别插入/更新每条记录。
之后,您可以创建 TableView ,将每个人所需的数据聚合到一行中,这样您就不会用复杂的 SQL 字符串污染您的 Go 代码。然后在 Go 中定义简单的 SQL 选择查询字符串并使用 database/sql
执行它们。
关于postgresql - 在 Postgresql 中存储和检索 Golang slice 、结构和结构 slice ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47718320/