为了账号安全,请及时绑定邮箱和手机立即绑定

Go尝试处理错误而不是我

Go尝试处理错误而不是我

Go
尚方宝剑之说 2022-09-26 19:32:24
我使用GORM运行以下代码:result := db.Where("account_name = ?", config.AccountName).First(&accountRecord) // line 299    // if there is some error when working with DB    if result.Error != nil && !errors.Is(result.Error, gorm.ErrRecordNotFound) {        fmt.Println("error when processing accountResponse")        return 0, false, result.Error    }// in case that record exists    if result.Error != nil {        accountRecord = newAcountData        result = db.Create(&accountRecord)    } else {        result = db.Model(&accountRecord).Updates(newAcountData)    }我已经想在找不到记录的情况下运行一些逻辑。但是 - 错误仍然显示在我的控制台中,说:The record was not found2021/08/30 18:30:16 /Users/kana/projects/server/data-processor/commands.go:289 record not found[4.966ms] [rows:0] SELECT * FROM "accounts" WHERE account_name = 'kana' AND "accounts"."deleted_at" IS NULL ORDER BY "accounts"."id" LIMIT 1为什么会这样呢?之后整个程序运行良好 - 没有崩溃,整体行为是它的设计方式。只是这个错误消息惹恼了我。
查看完整描述

1 回答

?
九州编程

TA贡献1785条经验 获得超4个赞

这是因为 GORM 正在处理一些日志输出,并且是其中之一。如果需要禁用这些类型的日志活动,可以执行以下操作:record not found

如果您使用的是 GORM v1

https://pkg.go.dev/github.com/jinzhu/gorm#DB.LogMode

db.LogMode(false)

如果您使用的是 GORM v2,则可以将记录器传递到 gorm 配置并控制输出。

https://gorm.io/docs/logger.html#Log-Levels

db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{
  Logger: logger.Default.LogMode(logger.Silent),
})


查看完整回答
反对 回复 2022-09-26
  • 1 回答
  • 0 关注
  • 61 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信