GORM 那傻逼文档真是傻逼妈妈给傻逼儿子开门,傻逼到家了
Finisher 方法
在 GORM 中,Finisher
方法是会立即执行注册回调的方法,然后生成并执行 SQL。例如,Create
、First
、Find
、Take
、Save
、Update
、Delete
、Scan
、Row
和 Rows
等方法都属于 Finisher
方法。
我们鼓励您在调用任何 Finisher
方法后都进行错误检查,以确保操作执行成功。
如何处理错误
如果遇到任何错误,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 {
// 处理错误...
}
错误类型的判断
在 GORM 中,当 First
、Last
、Take
方法找不到记录时,GORM 会返回 ErrRecordNotFound
错误。如果发生了多个错误,你可以通过 errors.Is
判断错误是否为 ErrRecordNotFound
。
// 检查错误是否为 RecordNotFound
err := db.First(&user, 100).Error
errors.Is(err, gorm.ErrRecordNotFound)
此外,GORM 还会在其他情况下返回错误。例如,当执行数据库操作时发生错误,GORM 会将其设置为 *gorm.DB
的 Error
字段,你可以检查这个字段来获取错误信息。
错误类型
错误类型 | 描述 |
---|---|
ErrRecordNotFound |
记录未找到错误 |
ErrInvalidTransaction |
当你尝试 Commit 或 Rollback 时,事务无效 |
ErrNotImplemented |
未实现 |
ErrMissingWhereClause |
缺少 where 子句 |
ErrUnsupportedRelation |
不支持的关系 |
ErrPrimaryKeyRequired |
需要主键 |
ErrModelValueRequired |
需要模型值 |
ErrInvalidData |
不支持的数据 |
ErrUnsupportedDriver |
不支持的驱动程序 |
ErrRegistered |
已注册 |
ErrInvalidField |
无效字段 |
ErrEmptySlice |
找到空切片 |
ErrDryRunModeUnsupported |
不支持 dry run 模式 |
ErrInvalidDB |
无效数据库 |
ErrInvalidValue |
无效值,应为结构体或切片的指针 |
ErrInvalidValueOfLength |
无效的关联值,长度不匹配 |
ErrPreloadNotAllowed |
当使用 count 时不允许预加载 |