所以我使用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中的声明友好的类型?
编辑:在go中,postres数组和复合类型看起来变成了字符串。如何重新设计模式以获得类似的结果?
发布于 2017-01-22 20:55:41
您的类型声明是错误的,请尝试以下示例:
type Phone struct {
Number string
Type PhoneType
}
type Person struct {
Id int
Name string
Email string
PhoneNumber []Phone
}https://stackoverflow.com/questions/41788790
复制相似问题