Gorm ErrRecordNotFound 的坑
原先的一个查找的写法:
if err := db.Table("users").Where("wechat_account = ?", wechat_id).First(u).Error; err != nil {
return nil, err
}
这里隐含了一个依赖,就是如果没有查找到相应记录,会返回 ErrRecordNotFound
的错误。但是重构之后写法改成了传入 optional 条件进行 query 的形式,最终查询使用的语句是 db.Find()
。而在 gorm 中,First 在查找不到记录时会返回 ErrRecordNotFound
的错误,但是 Find 不会,就导致重构前后的逻辑不一致
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论