猿问

Go尝试处理错误而不是我

我使用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 found


2021/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

为什么会这样呢?之后整个程序运行良好 - 没有崩溃,整体行为是它的设计方式。只是这个错误消息惹恼了我。


尚方宝剑之说
浏览 63回答 1
1回答

九州编程

这是因为 GORM 正在处理一些日志输出,并且是其中之一。如果需要禁用这些类型的日志活动,可以执行以下操作:record not found如果您使用的是 GORM v1https://pkg.go.dev/github.com/jinzhu/gorm#DB.LogModedb.LogMode(false)如果您使用的是 GORM v2,则可以将记录器传递到 gorm 配置并控制输出。https://gorm.io/docs/logger.html#Log-Levelsdb, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{   Logger: logger.Default.LogMode(logger.Silent), })
随时随地看视频慕课网APP

相关分类

Go
我要回答