问题标签 [go-gorm]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mysql - 如何将`where in`与整数切片一起使用
从http://jinzhu.me/gorm/advanced.html#sql-builder,我应该能够使用 WHERE IN 更新多行(?)
,并将切片传递给单个?
而不是WHERE IN (?,?,?,?)
.
jinzhu.me 的例子如下db.Exec("UPDATE orders SET shipped_at=? WHERE id IN (?)", time.Now, []int64{11,22,33})
:这是 gorm 的测试示例,显示它可以正常工作。https://github.com/jinzhu/gorm/blob/021d7b33143de37b743d1cf660974e9c8d3f80ea/main_test.go#L449
然而,这对我不起作用:
输出:
当我尝试硬编码时,我遇到了同样的问题:
输出:
解决方案:
代码实际上根本没有被窃听。我是不是很傻 - 我的实际代码中有一个额外的参数,而不是我应该有的。我只是没有正确地将其翻译为堆栈溢出。我的错。
go - 如何正确定义gorm db接口?
我正在尝试对使用类型的方法进行单元测试,*gorm.DB
并且很好奇如何正确定义一个接口,使我能够在不打数据库的情况下进行测试。
这是我想做的一个小例子:
结果是:
任何帮助,将不胜感激!
更新
这是我的实际应用程序代码:
结果是:
go - GORM pq 连接太多
我在我的项目中使用 GORM,一切都很好,直到我收到一条错误消息:
我只是使用默认配置。在我对我的应用程序做了很多测试请求之后发生了错误。
重新启动应用程序后,错误就消失了。所以,我认为在我完成查询后不会释放 GORM 连接。我对 GORM 代码的检查不够深入,我只是在这里问一下,也许有人已经对此有过经验?
go - GORM 不忽略带有 `gorm:"-"` 的字段
使用 Jinzhu 的 GORM 包,顺便说一句,我目前有这个结构:
但我也使用 Gorilla 的Schema
包,因此任何表单值都会填充结构,但我不希望将PasswordC
其保存到数据库中,因为它将是纯文本,因为普通Password
字段会被加密,因此有关如何制作的任何信息GORM
不保存场PasswordC
。
go - Golang GORM 扫描到地图
我对我的 GORM 应用程序进行了一些查询,现在从数据库中扫描行正在使用 struct。但是当我需要做一些彼此不同的查询时,问题就来了,我需要为我拥有的每个查询创建另一个结构。
实际上我并不关心我从数据库中获得的数据,它只是转发给客户端。所以,对我来说,为每一个制作结构将是很多工作。所以我在想,如果我可以将它扫描到 map[string]interface{} 或 []map[string]interface{}。那么在 GORM 上可以做到吗?
而且我还在想另一件事是当列转换为接口{}时,日期呢?它会被转换成字符串吗?(也适用于其他类型,如 int、long、array 等)
sqlite - 在 Go GORM 中显示外键的外键
我能够通过这种情况部分解决这个问题
不幸的是,Preload() 函数似乎不适用于深入研究相关对象集。
为了澄清,我有以下模型:
当我创建一个包含新房间、游戏和玩家对象的新对象时,我会返回以下数据(json 编码):
但是,如果我尝试使用 preload() 函数查询结构,我会得到以下信息:
请注意,Players 部分现在为空。这是我的房间注册和房间查询功能:
go - Golang GORM 和几个表的关联
结构:
我插入宽度:
但是当我打电话时gormConn.Find(&groups)
,我会得到[{id: 1, name: "Grrr", users: null}]
而不是[{id: 1, name: "Grrr", users: [{id:1, name: "Usr"}]}]
同样在 SQL 表groups
列中users
未找到。(所有结构都会gormConn.AutoMigrate
)
go - Gorm 在关联中创建重复项
我有以下 2 个具有多对多关系的结构。
如果我使用 DB.Create(my_message) 创建一条消息,一切正常:消息是在 DB 中创建的,还有一个位置,连接 message_locations 表中填充了消息和位置的相应 ID。
我所期待的是,如果位置已经存在于 DB 中(基于传递的 place_id 字段),gorm 将创建消息,检索位置 ID 并填充 message_locations。这不是正在发生的事情。由于 PlaceID 必须是唯一的,gorm 发现重复的键值违反了唯一约束“locations_place_id_key”并中止了事务。
另一方面,如果我使 PlaceID 不唯一,gorm 会创建带有关联的消息,但随后会为 Location 创建另一个重复条目。
在尝试保存消息之前,我可以测试该位置是否已经存在:
然后如果 true 关闭关联:
消息被保存而没有 gorm 抱怨,但是 message_locations 没有被填充。我可以“手动”填写它,因为我在测试它的存在时检索了位置 ID,但在我看来,它首先违背了使用 gorm 的目的。
我不确定正确的方法可能是什么。我可能遗漏了一些明显的东西,我怀疑我声明结构的方式可能有问题?欢迎提示。
更新 2016/03/25
我最终做了以下事情,我很确定这不是最佳的。如果你有更好的想法,请加入。
在测试该位置是否已经存在并且它确实存在之后:
go - 如何切换数据库连接并将其共享到 Golang 中的模型?(狂欢+戈姆)
我想在 Revel + Gorm(或 Golang 中的任何其他 ORM)中设置数据库分片,如https://github.com/thiagopradi/octopus 。
我将在安全过滤器中获取数据库连接字符串(这是一个自定义过滤器,在 revel 的参数过滤器之后添加)。现在我需要在下一个名为db filter的自定义过滤器中切换 db 连接
并且还需要在 revel 应用程序启动时实现 db 连接池。
postgresql - 如何使用 gorm 在 API 响应中显示日期时间值
我正在使用 Golang 构建简单的 API,并且正在使用带有 Postgres 的 gorm。我将日期时间值存储time.Now()
在数据库中,并且它正确存储。当我试图在 API 响应中显示这个值时,我得到了"0001-01-01T00:00:00Z"
价值。
服务器日志:
获取全部功能:
为什么会这样?