gorm中db.RecordNotFound方法的使用,何时报这个错误

本文讨论了在使用SQL查询数据库时,针对多条记录和单条记录的不同处理方式,包括`Distinct`用法、RecordNotFound错误处理以及注意事项。特别强调了如何避免因单条查询结果不存在导致的错误报告。

针对查询有如下问题:

如果是多条记录,

ruleTargets := []*RuleTarget{}
db := database.GetDB(ctx)
db = db.Select("distinct " + column)
db = db.Where("rule_targets.account_id in (?)", uids)
db.Find(&ruleTargets)

这样是不会有db.error的错误的。因为是多条记录的返回。

 

如果是单条记录:

ruleTargets := &RuleTarget{}
db = db.Select("distinct " + column)
db = db.Where("rule_targets.account_id in (?)", uids)
db.Find(&ruleTargets)

db.RecordNotFound()返回为true。同时,db.Error不为nil,
db.GetErrors()的len也不为0.因为有record not found这种error返回。这里要注意。对单条记录的查询,如果要忽略不存在数据的情况不报错,要这么处理:
if !db.RecordNotFound() && len(db.GetErrors()) > 0 {

//记录错误

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值