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_ID始终是0. 顺便说一句,从来没有哪一行Pack_ID0

这是 pgAdminIII 的屏幕截图,我希望能对这个问题有所了解:

在此处输入图像描述

关于可能出现什么问题的任何想法?我完全不知所措,在这里...

4

1 回答 1

5

您使用的结构标签似乎格式不正确。结构标记应采用以下形式

name:"value"

但是您所得到的是缺少值周围的引号:

name:value

尝试纠正这一点。否则,Go 中的 struct 标签解析器没有机会工作,因为它依赖于那些引号,如 struct 标签解析器实现中所见

关于特定的结构标签:你确定你应该使用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 回答