Return nil 结构而不是空结构 go-gorm
Return nil struct instead of empty struct go-gorm
使用以下模型:
type User struct {
UUID string `gorm:"primary_key"`
Name string `gorm:"NOT NULL"`
CreatedAt time.Time
UpdatedAt time.Time
}
如果您使用 go-gorm 为 NOT 存在的用户执行以下查询:
var user User
db.First(&user)
您最终收到一个填充了日期字段的空结构。有没有办法只接收一个 nil
结构,或者我是不是以错误的方式考虑这个问题?
添加指针函数
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())
在 gorm 中你应该检查记录是否为空,方法调用:
if db.First(&user, 77).RecordNotFound() {
log.Println("UUID:", 77, err)
}
有了这个模型
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
}
使用以下模型:
type User struct {
UUID string `gorm:"primary_key"`
Name string `gorm:"NOT NULL"`
CreatedAt time.Time
UpdatedAt time.Time
}
如果您使用 go-gorm 为 NOT 存在的用户执行以下查询:
var user User
db.First(&user)
您最终收到一个填充了日期字段的空结构。有没有办法只接收一个 nil
结构,或者我是不是以错误的方式考虑这个问题?
添加指针函数
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())
在 gorm 中你应该检查记录是否为空,方法调用:
if db.First(&user, 77).RecordNotFound() {
log.Println("UUID:", 77, err)
}
有了这个模型
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
}