我将数据库初始化为结构体
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)
工作正常。我应该如何修复这个问题?
我尝试了一些愚蠢的事情,比如从struct中删除 *,但这有点破坏了整个封装的想法。我也尝试了阅读https://gorm.io/docs/method_chaining.html,但没有得到如何实现它,也没有得到它是否是我的案例的解决方案。如果是,我要求一些澄清。
1条答案
按热度按时间2ledvvac1#
请检查您的导入语句。它应该是
import gorm.io/gorm
而不是import github.com/jinzhu/gorm
。该库的第一个版本是
github.com/jinzhu/gorm
,其中gorm.DB
类型没有WithContext()
方法。GORM V2移到https://github.com/go-gorm/gorm,导入路径为
gorm.io/gorm
。版本2添加了DB.WithContext()
方法。