尝试使用 SQLx 将查询结果扫描到嵌套结构时,用户可能会遇到诸如缺少目标名称之类的错误。当结构体字段名称和数据库列名称不完全匹配时,就会出现此问题。
根据 SQLx 文档中的建议,正确的方法是嵌入嵌套结构体在父结构内。例如:
type Customer struct { Id int `json:"id" db:"id"` Name string `json:"name" db:"name"` Address } type Address struct { Street string `json:"street" db:"street"` City string `json:"city" db:"city"` }
在此示例中,Address 结构嵌入到 Customer 结构中。通过嵌入嵌套结构,与Address关联的字段名称和标签被提升为Customer。因此,SQLx 可以正确地将结果映射到适当的字段。
需要注意的是,嵌入嵌套结构也会导致 JSON 编组期间输出扁平化。要保持原始的嵌套结构,您可以将数据库结构重新映射到原始类型。或者,您可以将查询结果扫描到 map[string]interface{} 中,但这需要在 Go 中仔细处理 Postgres 数据类型。
遵循这些指南可确保正确扫描使用 SQLx 将结果放入嵌套结构中。通过正确嵌入嵌套结构或利用重新映射或扫描到地图等替代方法,您可以有效地从数据库中提取复杂的数据结构。
以上是如何使用 SQLx 成功扫描嵌套结构?的详细内容。更多信息请关注PHP中文网其他相关文章!