首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >返回零结构,而不是空结构go-gorm。

返回零结构,而不是空结构go-gorm。
EN

Stack Overflow用户
提问于 2018-09-30 07:41:42
回答 3查看 2.1K关注 0票数 0

采用以下模式:

代码语言:javascript
复制
type User struct {
    UUID string         `gorm:"primary_key"`
    Name string         `gorm:"NOT NULL"`
    CreatedAt time.Time
    UpdatedAt time.Time
}

如果您对而不是的用户执行以下go-gorm查询:

代码语言:javascript
复制
var user User
db.First(&user)

最后收到的是填充日期字段的空结构。是否有一种方法来代替只接收一个nil结构返回,或者我是不是以错误的方式思考这个问题?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-09-30 09:05:13

在gorm中,您应该使用一个方法调用来检查记录是否为空:

代码语言:javascript
复制
if db.First(&user, 77).RecordNotFound() {
    log.Println("UUID:", 77, err)
}
票数 4
EN

Stack Overflow用户

发布于 2021-06-30 09:18:13

用这个模型

代码语言:javascript
复制
type User struct {
    UUID string         `gorm:"primary_key"`
    Name string         `gorm:"NOT NULL"`
    CreatedAt time.Time
    UpdatedAt time.Time
}
  • 你可以试试这个来获得零指针。
代码语言:javascript
复制
var user *User
db.First(&user)
  • 否则你也可以用这个
代码语言:javascript
复制
var user User
if db.First(&user).RecordNotFound(){
  //record not found
}
票数 0
EN

Stack Overflow用户

发布于 2018-09-30 08:33:23

添加指针函数

代码语言:javascript
复制
func (user User) Pointer() *User {
    var t time.Time
    if user.UUID == "" && user.Name == "" && user.CreatedAt == t && user.UpdatedAt == t {
        return nil
    }
    return &user
}

然后把它传过去

代码语言:javascript
复制
var user User
db.First(user.Pointer())
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52575750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档