猿问

不能在 *gorm.db 而不是 gorm.db 上使用 WithContext(ctx) 方法

我将我的数据库初始化为一个结构


type DBStorage struct {

   db *gorm.DB

}


db, err := gorm.Open("postgres", DatabaseURL)

...

return &DBStorage{

   db: db,

}

一切正常:查询、更新和所有其他操作。但是后来我尝试将上下文添加到我的项目中,但它并没有像那样工作:


func (dbStorage DBStorage) PutOrder(order service.Order, ctx context.Context) error {

...

   dbStorage.db.WithContext(ctx).Create(&order)

...

}

它说 WithContext 是一个未解析的引用。虽然dbStorage.db.Create(&order)工作正常。我应该如何解决这个问题?


我尝试了一些愚蠢的事情,比如从结构中删除 *,但它有点破坏了整个封装的想法。还尝试阅读https://gorm.io/docs/method_chaining.html但不知道如何实现它以及它是否适合我的情况。如果是的话,我要求澄清一下。


慕田峪7331174
浏览 187回答 1
1回答

元芳怎么了

检查您的进口声明。它应该import gorm.io/gorm代替import github.com/jinzhu/gorm.库的第一个版本是类型没有方法的github.com/jinzhu/gorm地方。gorm.DBWithContext()GORM V2 移至https://github.com/go-gorm/gorm并具有导入路径gorm.io/gorm。版本 2 添加了该DB.WithContext()方法。
随时随地看视频慕课网APP

相关分类

Go
我要回答