使用数据库时,经常会遇到一对多和多对多关系。在这种情况下,将这些关系高效且可扩展地映射到 Go 结构至关重要。
一种有效的方法是利用PostgreSQL 的数组聚合器和 GROUP BY 功能。这涉及创建一个视图,使用数组聚合将项目及其相关数据分组在一起。然后可以查询结果视图,并将数组内容解组到 Go 结构中。
SELECT tag.name, tag.id FROM tag WHERE item_id = item.id
) AS taglist
GROUP BY
item.id
`
db.MustExec(sql)
Go 代码将是:
return err
}
if err := json.Unmarshal([]byte(jsonString), &item); err != nil {
return err
}
items =追加(items, item)
}
这种方法结合了 PostgreSQL 的灵活性和数组聚合和行级编组的效率 去。即使关系复杂,它也可以无缝扩展。
虽然推荐的方法高效且通用,但问题中提到的替代解决方案有其自身的优点和缺点:
最终,最佳方法取决于应用程序的具体要求和可用技术。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3