[Go] gorm 錯誤處理 與 鏈式/Finisher方法


 

使用 gorm 在調用 Finisher 方法之后,建議都進行錯誤檢查。

Finishers 是會立即執行注冊回調的方法,然后生成並執行 SQL,比如這些方法:

Create, First, Find, Take, Save, Update, Delete, Scan, Row, Rows…

完整方法列表 https://github.com/go-gorm/gorm/blob/master/finisher_api.go
鏈式方法是將 Clauses 修改或添加到當前 Statement 的方法,例如:

Where、Select、Omit、Joins、Scopes、Preload、Raw(但在構建 SQL 語句時,Raw 不能與其它鏈式方法一起使用)…

完整方法列表 https://github.com/go-gorm/gorm/blob/master/chainable_api.go

 

創建記錄:

user := User{Name: "Jin", Age: 18, Birthday: time.Now()}

result := db.Create(&user) // 通過數據的指針來創建

user.ID             // 返回插入數據的主鍵
result.Error        // 返回 error
result.RowsAffected // 返回插入記錄的條數

 

處理錯誤:

GORM 的錯誤處理與常見的 Go 代碼不同,因為 GORM 提供的是鏈式 API。

如果遇到任何錯誤,GORM 會設置 *gorm.DB 的 Error 字段。

您需要像這樣檢查它:

if err := db.Where("name = ?", "jinzhu").First(&user).Error; err != nil {
  // 處理錯誤...
}

或者 

if result := db.Where("name = ?", "jinzhu").First(&user); result.Error != nil {
  // 處理錯誤...
}

 

ErrRecordNotFound 錯誤

當 FirstLastTake 方法找不到記錄時,GORM 會返回 ErrRecordNotFound 錯誤。

如果發生了多個錯誤,你可以通過 errors.Is 判斷錯誤是否為 ErrRecordNotFound,如:

// Check if returns RecordNotFound error
err := db.First(&user, 100).Error
errors.Is(err, gorm.ErrRecordNotFound)

 

Errors 錯誤

https://github.com/go-gorm/gorm/blob/master/errors.go

 

Link:https://www.cnblogs.com/farwish/p/14225964.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM