如何仅返回golang和gin + gorm中的给定字段?

时间:2019-11-19 17:09:13

标签: go go-gorm gin

例如:

请求: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的方法仅扫描结构和切片参数,不支持映射。

0 个答案:

没有答案