Golang gorm 关联数据不存在时如何返回Null?
这是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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
LastReplyUser User
改成
LastReplyUser *User
go里的结构体零值不是nil,指针才是
可以看看这个:
database/sql 包提供对应类型,需要添加对应的JSON编码解码逻辑。
https://medium.com/aubergine-...
如果觉得蛋疼,可以用别人封装好的: https://github.com/guregu/null