我将我的数据库初始化为 struct

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)就可以了.我该怎么解决这个问题呢?

我try 了一些愚蠢的事情,比如从 struct 中删除*,但它有点 destruct 了整个封装的 idea .我也试过阅读https://gorm.io/docs/method_chaining.html,但不知道如何实现它,以及它是否适合我的情况.如果是的话,我要求澄清一下.

推荐答案

判断您的IMPORT语句.应该是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()方法.

Go相关问答推荐

Zitadel示例Go Webapp加密密钥

如何在AWS SDK Go v2 STS上正确使用重试

按键值排序字符串- Golang

从MySQL/GO表获取行数据

JWT 如何解析声明有效性和错误?

这种合并排序的实现有什么问题?

Go-如何在递归函数中关闭通道

使用反射在Go中递归迭代 struct 体和集合字段

GORM中是否可能自动迁移具有循环关系的表?

我的神经网络(从头开始)训练,让它离目标更远

将 struct 转换为 CSV 字符串

上传图片失败,出现错误dial tcp: lookup api.cloudinary.com: no such host

Go 中的 HTTP 请求验证中间件

使用 package`regexp` 查找 Golang 中的所有 mactch 子字符串,但得到意外结果

切片到数组指针的转换

同时调用应该只获取一次数据

vs 代码调试 go 测试不通过标志

实现接口的指针的泛型类型是什么?

测试包外文件时的 Golang 测试覆盖率

golangci-lint 的 GitHub 操作失败,无法加载 fmt