为了账号安全,请及时绑定邮箱和手机立即绑定

返回 nil 结构而不是空结构 go-gorm

返回 nil 结构而不是空结构 go-gorm

Go
HUWWW 2023-04-17 15:02:04
使用以下模型:type User struct {    UUID string         `gorm:"primary_key"`    Name string         `gorm:"NOT NULL"`    CreatedAt time.Time    UpdatedAt time.Time}如果您使用 go-gorm 为不存在的用户执行以下查询:var user Userdb.First(&user)您最终会收到一个填充了日期字段的空结构。有没有一种方法可以代替只接收一个nil结构,或者我是否以错误的方式考虑这个问题?
查看完整描述

3 回答

?
MM们

TA贡献1886条经验 获得超2个赞

在 gorm 中,您应该通过方法调用检查记录是否为空:

if db.First(&user, 77).RecordNotFound() {
    log.Println("UUID:", 77, err)
}


查看完整回答
反对 回复 2023-04-17
?
慕沐林林

TA贡献2016条经验 获得超9个赞

有了这个模型


type User struct {

    UUID string         `gorm:"primary_key"`

    Name string         `gorm:"NOT NULL"`

    CreatedAt time.Time

    UpdatedAt time.Time

}

你可以试试这个来获得零指针

var user *User

db.First(&user)

否则你也可以使用它

var user User

if db.First(&user).RecordNotFound(){

  //record not found

}


查看完整回答
反对 回复 2023-04-17
?
芜湖不芜

TA贡献1796条经验 获得超7个赞

添加指针函数


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())


查看完整回答
反对 回复 2023-04-17
  • 3 回答
  • 0 关注
  • 120 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信