问题标签 [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.
json - Deserializing nested JSON, or simply pass it forward in Go
Building a basic API with Go, I've got JSON stored in a JSON field in a postgres table, along with some other (plain) datatypes. Using my model, I'm simply trying to fetch a row from the database and pass it forward as JSON.
Using GORM to deserialize the data into a struct, most of the mapping happens seamlessly, except for the JSON, which depending on selected datatype either renders as a bytearray or string.
Here are the models (Updated):
With the typical JSON looking like this (from the DB):
So the idea is that I simply want to pass this data on, not alter it, or deserialize it to a Go struct or anything. The controller/route follows:
Which responds with the following JSON (with stats as json.RawMessage):
Or alternatively (with stats as string):
What options do I have to simply pass this on, so far I've unsuccessfully attempted to map the JSON to a struct (which becomes difficult because of the dynamic data, and the reason I chose JSON to start with)?
I realize there's some magic going on from gin-gonic, with c.JSON automatically(?) marshalling all of the data from the struct to JSON, but hoping there's some way to avoid marshalling the json data?
When ran with the ItemInfo substruct, it panics with the following error:
EDIT: Updated code:
go - gorm 多对多选择给出无效的关联 [] 错误
这是我的数据库架构:
用户:
语言:
用户语言:
这是我的代码:
我期待这个结果:
但是我正在invalid association []
控制台上,添加一个 gorm 记录器并没有提供更多信息。
即使我只能得到一个“语言”对象,比如一组语言名称,这也很好:
go - 戈姆的many2many,真的
我正在尝试在gorm中使用多对多关系。但是,该示例是部分片段,我创建类似示例片段的尝试失败了。
这会在最后一次 CreateTable 调用中出现恐慌:panic: invalid association []
reflection - 去 gorm 库反映
我在 golang 中使用 gorm 包(https://github.com/jinzhu/gorm)作为我的数据库库。我有很多类(数据库表),例如“Hotel”或“Package”。复制代码不是好的编程习惯。作为一个愚蠢的例子 - 假设我想从每个表中获取第一个对象。我可以为每个对象编写这个方法(GetFirstHotel
,GetFirstPackage
...)。但更好的方法是只有一个方法GetFirstItem
,我将使用第一个参数创建与参数具有相同类的对象,然后将其传递给 gorm,它将用数据库中的数据填充它,然后将其返回为interface{}
. 我尝试为此使用反射,但失败了,因为我可能不太了解它。
也许我只是没有发现gorm库中的某些功能,或者我无法正确使用反射包。我应该如何实现GetFirstItem
功能。是否有可能实现这一点,或者我应该重复我的代码?
mysql - 尝试从模型创建表时出错
我今天开始玩 gorm,但不幸的是遇到了一些愚蠢的错误,并坚持了一段时间。起初我在 Windows 上运行 MySQL 5 (5.0.51b) 和最新版本的 go。我确实去获取了 gorm 和 mysql 驱动程序,它编译时没有错误并且能够连接(可能),但是每当我尝试根据声明的类型创建表时,它都会抛出一个不提供信息的错误(因为错误是由 MySQL 抛出)。这是我的代码:
所以这个模型的目标是非常基础的,例如一个只有一列的表格。现在是输出:
< nil > &{0x111e2230 错误 1064:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 ') ENGINE=InnoDB' 附近使用正确的语法 0 0x112d4060 0x112d4000 0x112d8140 0 {0x112a3f20} false map[gorm:table_options:ENGINE=InnoDB] map[]}
第一个是连接错误,这意味着它能够连接,但是查询不是那么好,并且除了 gorm 生成的 SQL 由于某种原因失败之外,该错误几乎没有说明。所以问题是是否有人知道为什么会抛出错误以及是否有任何解决方案。
mysql - 无法在 Go 中连接到远程 MySql
我需要使用 Go 连接到远程 MySql 服务器。我正在使用以下代码通过 gorm 连接到 MySql。
当我运行 Go 服务器时,出现以下错误
如何修复此错误?
go - Golang Gorm 一对多与 has-one
我正在尝试通过构建一个小的原型订单管理应用程序来学习 Go 和 Gorm。数据库是 MySQL。通过简单的查询,Gorm 一直很出色。然而,当试图获得一个包含一对多和一对一关系组合的结果集时,Gorm 似乎达不到要求。毫无疑问,实际上是我缺乏了解。我似乎找不到任何关于我正在努力完成的在线示例。任何帮助将不胜感激。
去结构
数据库表
当前查询
结果(gorm 进行 2 db 查询)
替代查询
结果(gorm 进行 3 db 查询)
理想的结果
上面的“替代查询”会产生理想的查询结果。但是,Gorm 为此进行了 3 个单独的数据库查询。理想情况下,使用 1 个(或 2 个)数据库查询可以获得相同的结果。
这可以通过几个连接在 MySQL 中完成。Gorm 允许连接。但是,我希望利用 Gorm 的一些关系魔法。
非常感谢!
go - Golang gorm - 预加载深度嵌套模型
我有以下人为的例子:
这给了我以下输出:
如果我只嵌套 Top -> Middle -> Low 并调用Preload("Middle.Low")
它可以正常工作。线索可能在双指针引用中[]**main.Low
,但我无法弄清楚如何正确执行此操作。
此级别可能不支持嵌套预加载。有人知道吗?
mysql - Golang Join 数组接口
我尝试创建批量插入。我使用gorm github.com/jinzhu/gorm
但我得到一个错误:
错误 1136:列计数与第 1 行的值计数不匹配,因为我返回了错误的查询
如果我使用手动查询,它可以工作:
它将生成:
问题是如何使数组接口生成类似的字符串"XX1", "Jakarta", ...
感谢帮助。