GORM 执行结果判断问题(error nil问题)

简介: GORM 执行结果判断问题(error nil问题)

起因


使用GORM执行数据库操作时,返回了*DB,如果我们直接使用以下方式判断,会一直返回false,不能用作语句执行结果的判断

    err := db.Create(&demand)
  if err != nil {
    return false, err.Error
  }
  return true, nil

正确处理


判断时需要使用返回的结构体的Error成员进行判断,如下即可进行正确返回

    err := db.Create(&demand)
  if err.Error != nil {
    return false, err.Error
  }
  return true, nil

原因


分析gorm源码我们可以发现,gorm语句执行返回了一个*DB结构体,而error对象被包含在其中,所以gorm执行完返回该结构体时不能直接用作执行结果判断,需要使用其中的Error成员

image.png

目录
相关文章
|
2月前
|
Go
mutex := rs.NewMutex(mutexname) // 对key进行 if err := mutex.Lock(); err != nil { pani
mutex := rs.NewMutex(mutexname) // 对key进行 if err := mutex.Lock(); err != nil { pani
|
3月前
|
Go
优雅判断 interface 是否为 nil
优雅判断 interface 是否为 nil
|
Web App开发 安全 Windows
解决:对COM 组件的调用返回了错误 HRESULT E_FAIL
  调用SHDOCVW(web浏览器) COM组件的时候,返回了错误 HRESULT E_FAIL。总结如下:     1. 在控制面板--->管理工具--->服务 中,开启Distributed Transaction Coordinator 服务。
6346 0
|
6月前
|
API Android开发 开发者
debug常见错误,出现debug时出现跑进为条件为false的if语句,DELETE_FAILED_INTERNAL_ERROR Error while In
debug常见错误,出现debug时出现跑进为条件为false的if语句,DELETE_FAILED_INTERNAL_ERROR Error while In
40 5
|
小程序
uniapp小程序扫描条形码call failed:, {errMsg: “scanCode:fail“}解决方法
uniapp小程序扫描条形码call failed:, {errMsg: “scanCode:fail“}解决方法
171 0
|
SQL 并行计算 数据库连接
ArcSWAT报错:Error Number :-2147467259; 对 COM 组件的调用返回了错误 HRESULT E_FAIL
ArcSWAT报错:Error Number :-2147467259; 对 COM 组件的调用返回了错误 HRESULT E_FAIL
Golang 中 nil==nil 是对是错?
Golang 中 nil==nil 是对是错?
79 0
|
Java Apache
log4j:ERROR setFile(null,true) call failed.
log4j:ERROR setFile(null,true) call failed.java.io.FileNotFoundException: /opt/logs/log.log (没有那个文件或目录) at java.
3342 0
|
Go C语言 存储
Go“一个包含nil指针的接口不是nil接口”踩坑
Go“一个包含nil指针的接口不是nil接口”踩坑最近在项目中踩了一个深坑——“Golang中一个包含nil指针的接口不是nil接口”,总结下分享出来,如果你不是很理解这句话,那推荐认真看下下面的示例代码,避免以后写代码时踩坑。
902 0