私はpostgres db tableを持っています
CREATE TABLE foo (
name varchar(50),
types varchar(50)[],
role varchar[10]
);
とそれに対応する構造体:
type Foo struct {
Name string `db:"name"`
Types []string `db:"types"`
Role string `db:"role"`
}
構造体にdb行をフェッチしたい。今私はこれを使用してこれを行うことができます:
var foo Foo
query := `SELECT name, types, roles FROM foo LIMIT 1`
err = dbConn.QueryRow(query).Scan(&foo.Name, pq.Array(&foo.Types), &foo.Role)
しかし、私は直接マッピングを使用して同じことを達成したいと思います。何かのようなもの:
var foo []Foo
query := `SELECT name, types, roles FROM foo`
dbWrapper.err = dbConn.Select(&foo, query)
上記のスニペットはTypes
、pq配列であるためエラーが発生します。構造体の一部としてpq配列を直接マップすることは可能ですか?
おかげhttps://stackoverflow.com/a/44385791/10138004は、私はSQLXのため、このPQドライバ(解決することができる午前https://godoc.org/github.com/lib/pq置き換えることで)自分自身を[]string
とpq.StringArray
。
したがって、更新された構造体は次のようになります。
type Foo struct {
Name string `db:"name"`
Types pq.StringArray `db:"types"` //this is what changed.
Role string `db:"role"`
}
ダイレクトマッピングが魅力的に機能している
var foo []Foo
query := `SELECT name, types, roles FROM foo`
dbWrapper.err = dbConn.Select(&foo, query)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加