Gorm 未返回 ErrRecordNotFound

Skh*_*haz 3 go go-gorm

我有以下代码

func (r *WorkspaceRepository) Delete(id any) (bool, error) {
    if err := r.db.Where("id = ?", id).Delete(&model.Workspace{}).Error; err != nil {
        return false, err
    }

    return true, nil
}
Run Code Online (Sandbox Code Playgroud)

当我传递一个不存在的ID时,不会返回任何错误,就好像该记录存在一样!

删除之前我需要做什么检查,是否需要先进行SELECT?

小智 7

Delete 方法不会返回 ErrRecordNotFound 错误。文档在这里: https: //gorm.io/docs/error_handling.html

当使用First、Last、Take查找数据失败时,GORM 返回 ErrRecordNotFound

代码:

r.db.Where("id = ?", id).Delete(&model.Workspace{})
Run Code Online (Sandbox Code Playgroud)

返回 gorm.DB 结构,您可以检查是否有任何项目被删除

 tx := r.db.Where("id = ?", id).Delete(&model.Workspace{})

 fmt.Println(tx.RowsAffected)
Run Code Online (Sandbox Code Playgroud)