登录
首页 >  Golang >  Go问答

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

来源:SegmentFault

时间:2023-01-07 11:05:53 217浏览 收藏

知识点掌握了,还需要不断练习才能熟练运用。下面golang学习网给大家带来一个Golang开发实战,手把手教大家学习《如何使用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
        ……
    }

正确答案

  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{})

到这里,我们也就讲完了《如何使用go响应数据vo快速过滤gorm查询结果中的敏感信息?》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于mysql的知识点!

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表