2017-01-22 22 views
1

私はpostgresを照会するためにgo-gorpを使用しています。テーブル内の複合型を照会できないようです。私が望むのは、適切にネストされたJSONレスポンスです。私のPostgresのスキーマは次のとおりです。次のようにゴールから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 
} 

を持って照会し、私は行く-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 
} 

このネストされた複合型を、私の宣言に適した型に変更するにはどうすればよいですか?

EDIT:postres配列のように見え、複合型はgoで文字列になります。どのように私は同様の結果を達成するためにスキーマを再設計できますか?

答えて

0

あなたのタイプ宣言が間違っている、例えばこれを試してみてください。

type Phone struct { 
    Number string 
    Type PhoneType 
} 

type Person struct { 
    Id   int 
    Name   string 
    Email   string 
    PhoneNumber []Phone  
} 
+0

は、私はすでに、ここでは私が取得エラーだと試みた SQL:サポートされていないスキャン、driver.Valueタイプを格納:列のインデックス3のスキャンエラー[] uint8 into type * [] main.PhoneNumber – tushar

関連する問題