使用以下模型: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) }
慕沐林林
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
}
芜湖不芜
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())
- 3 回答
- 0 关注
- 120 浏览
添加回答
举报
0/150
提交
取消