所以我使用 go-gorp 来查询 postgres,我似乎无法查询我的表中的复合类型给出了错误。我想要的只是适当嵌套的 JSON 响应。我的 postgres 架构是:
CREATE TYPE PhoneType AS ENUM ('MOBILE', 'HOME', 'WORK');
CREATE TYPE PhoneNumber AS (
"Number" VARCHAR,
"Type" PhoneType
);
CREATE TABLE Person (
"Id" SERIAL PRIMARY KEY NOT NULL,
"Name" VARCHAR NOT NULL,
"Email" VARCHAR,
"Number" PhoneNumber[]
);
相应地在golang中,我有
const (
MOBILE PhoneType = iota
HOME
WORK
)
type PhoneNumber struct {
Number string
Type PhoneType
}
type Person struct {
Id int
Name string
Email string
PhoneNumber // not sure how to get array of phone numbers here
}
为了查询,我使用 go-gorp 如下:
dbmap := &gorp.DbMap{Db: db, Dialect: gorp.PostgresDialect{}}
var data []Person
_, err := dbmap.Select(&data, "SELECT * FROM Person")
我得到的结果有格式
{
"Id":
"Name":
"Email"
"Number": "{\"(..., ...)\"}"
"Type": 0
}
我期待的是:
{
"Id":
"Name":
"Email":
"PhoneNumber": [{
"Number":
"Type":
}]
}
如何将此嵌套复合类型更改为对我在 go 中的声明友好的类型?
编辑:看起来 postres 数组和复合类型变成了字符串。如何重新设计架构以实现类似的结果?