我正在使用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_ID
0
永远不会有{{1}}行。
以下是pgAdminIII的截图,我希望能够解释这个问题:
关于可能出错的任何想法?我完全失去了,在这里......
答案 0 :(得分:5)
您正在使用的struct标签似乎格式不正确。结构标记should be of the form:
name:"value"
但是你得到的是缺少值周围的引号:
name:value
尝试纠正此问题。否则,Go中的struct标记解析器没有机会工作,因为它取决于那些引号as seen in the struct tag parser implementation。
关于特定的struct标签:你确定你应该使用db
吗?根据{{3}},您可能希望使用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"`
}