gorm(v1.20) 连接 pgsql数据库,使用 find first 查询方法,当返回数据为空时报错
```go
errors.Is(err, gorm.ErrRecordNotFound)
```
使用该方法也无法检查出该类错误,目前无法处理这个错误,只能通过字符串判断。
求助大佬,是否有更好的解决方案。
查询很多gorm操作没有解决方案,gorm是否对pgsql无法更好的兼容?
是否有其他orm推荐,或者更适合pgsql的操作方式。
------------------------------------
代码补全(first 不可行,这里用的find的)
```go
func GetUserByOpenID(openID string) (users []User, err error) {
err = db.Where("wechatOpenID = ?", openID).Limit(1).Find(&users).Error
return
}
users, err := models.GetUserByOpenID(body.OpenID)
fmt.Println(err)
// ERROR: column "wechatopenid" does not exist (SQLSTATE 42703)
fmt.Println(errors.Is(err, gorm.ErrRecordNotFound))
// false
```
直接判断错误编码最可靠
```go
var te *pgconn.PgError
if errors.As(err, &te) {
if te.Code == "42703" {
// 你的逻辑
}
}
```
#3
更多评论