返回nil struct而不是空struct go-gorm

时间:2018-09-30 07:41:43

标签: go go-gorm

使用以下模型:

type User struct {
    UUID string         `gorm:"primary_key"`
    Name string         `gorm:"NOT NULL"`
    CreatedAt time.Time
    UpdatedAt time.Time
}

如果您对不存在不存在的用户使用go-gorm进行以下查询:

var user User
db.First(&user)

您最终收到一个空的结构,其中填充了日期字段。有没有一种方法可以反过来只收到一个nil结构,还是我以错误的方式考虑了这个问题?

3 个答案:

答案 0 :(得分:3)

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

angular.json

答案 1 :(得分:0)

有了这个模型

type User struct {
    UUID string         `gorm:"primary_key"`
    Name string         `gorm:"NOT NULL"`
    CreatedAt time.Time
    UpdatedAt time.Time
}
  • 你可以试试这个来获取 nil 指针
var user *User
db.First(&user)
  • 否则你也可以使用这个
var user User
if db.First(&user).RecordNotFound(){
  //record not found
}

答案 2 :(得分:-1)

添加指针功能

func (user User) Pointer() *User {
    var t time.Time
    if user.UUID == "" && user.Name == "" && user.CreatedAt == t && user.UpdatedAt == t {
        return nil
    }
    return &user
}

并通过

var user User
db.First(user.Pointer())