大概需求是我的api需要根据调用方传的数据库字段名参数来只返回这些字段的数据。
请求格式:
https://host:port/resources/1?fields=field1,field2,field3...
我需要拿到fields,然后根据这些字段名去Select,然后只返回这些字段的数据,而不是表的所有字段。
伪代码:
type Example struct{
Id uint64
Name string
Gender string
Age uint8
}
var example Example
...
db.Table("example").Select("Name,Gender").Where("id = ?", 1).Scan(&example)
...
c.SecureJSON(http.StatusOK, gin.H{
"msg": http.StatusText(http.StatusOK),
"data": example,
})
期望:
只返回包含Name和Gender的结果
实际:
Id、Name、Gender、Age都会返回,只不过Id和Age都是struct的默认值。
我知道可以Scan到一个新的struct,但是新的struct我依然要事先定义出来,我事先是不知道对方想要什么参数。而gorm的Scan又只支持Scan到struct或slice。不能Scan到map中。
请问这种问题如何解决,先谢过了。
那就用gorm.db.Rows().Scan(&name,&genger)就行了嘛