0

go-gorm を使用して PostgreSQL データベースから値を取得しています。関連するコードを以下に示します。

type Chip struct {
    UUID    string `db:uuid`
    URL     string `db:url`
    N       int    `db:n`
    Pack_ID int    `db:pack_id`
}

func getChip(uuid string) (Chip, error) {
    var c Chip
    err := DB.Model(Chip{}).Where("uuid = ?", uuid).First(&c)
    return c, err.Error
}

UUID 文字列を に渡すとgetChip、正しい行が返され、常に である を除いてすべての値が正しいです。ちなみに が である行はありません。c.Pack_ID0Pack_ID0

これは pgAdminIII のスクリーンショットです。これで問題が明らかになることを願っています。

ここに画像の説明を入力

何がうまくいかないのかについてのアイデアはありますか? 私は完全に途方に暮れています、ここで...

4

1 に答える 1

5

使用している構造体タグの形式が正しくないようです。構造体タグは次の形式にする必要があります

name:"value"

しかし、あなたが持っているのは、値の周りの引用符がありません:

name:value

これを修正してみてください。それ以外の場合、Go の構造体タグ パーサーは、構造体タグ パーサーの実装に見られるように、これらの引用符に依存するため、機能する可能性がありません。

特定の構造体タグに関して: 本当に使用することになっていますdbか? Gorm のドキュメントによると、おそらくgorm:"column:...". 私はあなたの型定義が次のようになることを期待していました:

type Chip struct {
    UUID    string `gorm:"column:uuid;primary_key"`
    URL     string `gorm:"column:url"`
    N       int    `gorm:"column:n"`
    Pack_ID int    `gorm:"column:pack_id"`
}
于 2015-03-29T22:57:52.887 に答える