go - 如何使查询结果结构与我在 GORM Select 上声明的结构相匹配

标签 go

我想让查询结果的结构与我在 GORM Select 中声明的结构相匹配,因为现在它只与 Struct 结构相匹配。我如何让它工作?提前谢谢你

我已经尝试制作新的 Struct 并且它有效,但我不知道它是否是最佳实践

type User struct {
    User_Id  uint   `json:"user_id" gorm:"column:user_id; PRIMARY_KEY"`
    Email    string `json:"email"`
    Password string `json:"password"`
    Token    string `json:"token" gorm:"-"`
}

func GetUsers() map[string]interface{} {
    users := []User{}
    GetDB().Table("app_user").Select("user_id, email").Find(&users)
    resp := u.Message(true, "All users")
    resp["users"] = users
    return resp
}
//actual result
{
    "message": "All users",
    "status": true,
    "users": [
        {
            "user_id": 1732,
            "email": "aaaaaaa@gmail.com",
            "password": "",
            "token": ""
        },
        {
            "user_id": 1733,
            "email": "bbbbbbb@gmail.com",
            "password": "",
            "token": ""
        },
    ]
}

//Expected result 
{
    "message": "All users",
    "status": true,
    "users": [
        {
            "user_id": 1732,
            "email": "aaaaaaa@gmail.com"
        },
        {
            "user_id": 1733,
            "email": "bbbbbbb@gmail.com"
        }
     ]
}

最佳答案

看起来您需要做的就是省略空字段。您可以通过向 json 标签添加 omitempty 来做到这一点:

    Password string `json:"password,omitempty"`
    Token    string `json:"token,omitempty" gorm:"-"`

关于go - 如何使查询结果结构与我在 GORM Select 上声明的结构相匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57742892/

相关文章:

redis - go/golang + redis 打开文件太多错误

go - 在 Go 中对 Gob 数据使用 Snappy 压缩?

go - 在 Azure Devops 中安装并运行 go package 任务

asp.net-mvc - 通过 .net MVC 调用 Go 命令

go - 为什么当我在发件人端关闭时仍然会出现 "send on closed channel" panic ?

go - 使用 chrome headless 和 GO 转储 DOM

go - 在新目录中打开 Shell

go - 我如何使用 exec.Command().Output() 返回相同类型的值

go - Type a type后,不能再混用

go - 为什么 goroutine 中的 fmt.Println 不打印一行?