go 响应数据vo 如何快捷过滤 gorm查询结果中的敏感信息?

1、
gorm查询结果是一个结构体模型数据

type Merchant struct {
    Id          int                  `json:"id" gorm:"comment:''"`
    Username    string               `json:"username" gorm:"comment:'用户名'"`
    Password    string               `json:"password" gorm:"comment:'密码'"`
    ……
}

2、
我将结构体模型数据过滤Password字段,只返回username字段

3、
我除了自己创建一个map,然后循环gorm查询结果,一行一行填充有没有其他办法

m := map[string]interface{}{}
    for _, item := range row {
        m["username"]=row.Username
        ……
    }
阅读 2.7k
2 个回答
  1. 参考GORM的相关钩子逻辑(https://gorm.io/docs/hooks.html),查询出来后可以手动将password字段置空。
func (u *Merchant) AfterFind(tx *gorm.DB) (err error) {
    u.Password = ""
    return
}

2.使用一个仅包含部分字段的结构体去接收查询结果

## 仅包含部分子字段的结构体
type MerchantBase struct {
    Id       int    `json:"id" gorm:"comment:''"`
    Username string `json:"username" gorm:"comment:'用户名'"`
}
## 查询相关
db.Model(&Merchant{}).Find(&MerchantBase{})

你可以使用其他用去除password的结构体接收gorm查询结果就行了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏