例如:
请求:curl -X GET https://host/resources/1?fields=name,gender
type Foo struct{
Id uint64 `gorm:"column:id"`
Name string `gorm:"column:name"`
Gender string `gorm:"column:gender"`
Age uint8 `gorm:"column:age"`
}
var foo Foo
...
fields := c.Query("fields")
id := c.Param("id")
...
db.Model(Foo{}).Select(fields).Where("id = ?", id).Scan(&foo)
...
c.SecureJSON(http.StatusOK, gin.H{
"msg": http.StatusText(http.StatusOK),
"data": foo,
})
想要:
{
msg:OK
data:
{
Name: xxx
Gender: male
}
}
知道:
{
msg:OK
data:
{
Id: 0
Name: xxx
Gender: male
Age: 0
}
}
如何解决该问题? 因为查询字符串“ fields”是不确定的。 那不是它的工作原理
type Bar struct{
Name string `gorm:"column:name"`
Gender string `gorm:"column:gender"`
}
var bar Bar
db.Model(Foo{}).Select(fields).Where("id = ?", id).Scan(&bar)
gorm的方法仅扫描结构和切片参数,不支持映射。