使用以下模型: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 關注
- 170 瀏覽
添加回答
舉報
0/150
提交
取消