从 GORM V1 迁移到 V2 时获得 "Missing Error method"

Getting "Missing Error method" when migrating from GORM V1 to V2

我目前正在从 GORM V1 迁移到 V2。有相当数量的向后兼容性,但我面临以下问题。

config.DB, err = gorm.Open(mysql.Open(config.DBDSN), &gorm.Config{})
    if err != nil {
        panic(err)
    }

上面的代码显示了我如何连接到 mySQL 数据库。下面的函数导致错误。

func (b *Base) AddTags(model interface{}, modelID uint64, tagType models.TagType, tags []models.Tag) error {
    err := b.config.DB.Model(model).Association(tagType.Field()).Append(tags).Error
    if err != nil {
        return err
    }

    return b.updateTagPriority(model, modelID, tagType, tags)
}

错误是

cannot use err (type func() string) as type error in return argument: func() string does not implement error (missing Error method)

我使用 V2 发行说明重构了部分代码,但我无法解决这个特定问题。 https://gorm.io/docs/v2_release_note.html 我认为 V1 和 V2 之间的错误处理可能会有一些重大变化

根据codeAppend函数returns只有一个原生的error

所以你可以这样写:

err := b.config.DB.Model(model).Association(tagType.Field()).Append(tags)

而不是:

err := b.config.DB.Model(model).Association(tagType.Field()).Append(tags).Error