我正在嘗試通過令牌選擇實(shí)體。var event models.Eventerr := p.db.Preload("Groups.Participants").Find(&event, "token = ?", token).Errorreturn event, err但是如果我通過一個空的,例如?!啊被蚱渌淮嬖诘牧钆?。我沒有收到錯誤,我只是得到一個未填充的事件。我可以檢查 event.ID== 0,但我覺得這有點(diǎn)奇怪。我有點(diǎn)驚訝,即使沒有找到實(shí)體,它仍然是零。tokenerr我做錯了什么嗎?有沒有更好的方法來處理上述問題?
1 回答

手掌心
TA貢獻(xiàn)1942條經(jīng)驗(yàn) 獲得超3個贊
Find
如果未找到任何記錄,則不會導(dǎo)致錯誤。這在關(guān)于單個對象檢索的文檔中作為旁注提到:
如果要避免錯誤,可以使用 like ,該方法同時接受結(jié)構(gòu)和切片數(shù)據(jù)
ErrRecordNotFound
Find
db.Limit(1).Find(&user)
Find
如果必須使用,則必須自己檢查無記錄,方法是在使用它檢索單個對象時檢查零值,或者在使用它檢索多個對象時檢查切片長度與零。但是,如果您只檢索單個對象,那么我建議您使用該鏈接中記錄的方法之一,即 ,或 ,如文檔所示,當(dāng)找不到滿足查詢的記錄時,這些方法確實(shí)會導(dǎo)致錯誤。Find
First
Take
Last
ErrRecordNotFound
- 1 回答
- 0 關(guān)注
- 104 瀏覽
添加回答
舉報
0/150
提交
取消