Golang gorm 关联数据不存在时如何返回Null?

发布于 2022-09-06 15:13:10 字数 1984 浏览 48 评论 0

这是model

type Topic struct {
    BaseModel
    User            User           `json:"user" gorm:"ForeignKey:UserId"`
    UserId          int            `json:"user_id"`
    Category        Category       `json:"category" `
    CategoryId      int            `json:"category_id"`
    Title           string         `json:"title"`
    Cover           string         `json:"cover"`
    Content         string         `json:"content"`
    LastReplyUser   User           `json:"last_reply_user" gorm:"ForeignKey:LastReplyUserId"`
    LastReplyUserId int            `json:"last_reply_user_id"`
    LastReplyAt     mysql.NullTime `json:"last_reply_at"`
    ViewCount       int            `json:"view_count"`
    LikeCount       int            `json:"like_count"`
    IsRecommended   int            `json:"is_recommended"`
    IsTop           int            `json:"is_top"`
    Status          int            `json:"status"`
    Sort            int            `json:"sort"`
}

Topic Belong to User, Category, LastReplyUser

比如 LastReplyUserId 为0时,LastReplyUser 应该是不存在的,则查询后返回的 LastReplyUser 如何为一个null,或者说是nil

目前的查询出来转化为json的效果如下 :

     {
       ...此处省略
        "last_reply_user": {
            "id": 0,
            "created_at": "0001-01-01T00:00:00Z",
            "updated_at": "0001-01-01T00:00:00Z",
            "username": "",
            "email": "",
            "phone": "",
            "last_login_at": {
                "Time": "0001-01-01T00:00:00Z",
                "Valid": false
            },
            "post_count": 0,
            "topic_count": 0,
            "status": 0,
            "follower_count": 0,
            "following_count": 0
        },
        "last_reply_user_id": 0,
        ...此处省略
    }

如何能的得到这样的结构 :

     {
       ...此处省略
        "last_reply_user":null, # 或者 {}
        "last_reply_user_id": 0,
        ...此处省略
    }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

星光不落少年眉 2022-09-13 15:13:10

LastReplyUser User
改成
LastReplyUser *User
go里的结构体零值不是nil,指针才是

落日海湾 2022-09-13 15:13:10

可以看看这个:
database/sql 包提供对应类型,需要添加对应的JSON编码解码逻辑。

https://medium.com/aubergine-...

如果觉得蛋疼,可以用别人封装好的: https://github.com/guregu/null

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文