问题标签 [go-xorm]
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.
go - 存储有关结构的信息/参考
我正在寻找一种方法来存储函数应该使用的结构信息。每个结构对应于某个数据库表。
我希望能够为表动态选择结构。
目标 DRY(我有大约 30 张表,功能相同)
我努力了:
使用
reflect.TypeOf(),但我不明白是否/如何使用它(reflect.Type)来定义一个新变量XormStruct interface{}使用和为每个 ListOfTables 条目定义记录创建一个切片,例如var posts []Post和{"Post", "post_id", posts},搜索 SO 和 godocs
在我看来,即使它没有这么说,xorm.Find()得到一个interface{}而不是“快乐”也是如此。[]Posts
更新: 我相信最大的区别是:
解决方案
go - 将 bool 转换为 tinyint golang
我正在使用最新版本的 xorm 并想创建一个简单的 go 结构,如下所示:
我知道 go 中的 bool 类型评估为 true 和 false,但我需要将其映射到 mySql 数据库,其中值为 tinyint(3),1 映射为 true,0 映射为 false。在上面的示例中,无论我的帖子请求是什么样的,isDeleted 始终评估为 0。提前感谢您对此问题的任何建议。这个https://github.com/go-xorm/xorm/issues/673可能会提供一些上下文。
go - Golang通用数据库单条记录转json
我想从数据库中检索记录并将其编组为 json。我有大约 30 个不同的表,所以我想要可以与所有和任何这些表一起使用的通用函数。我使用 xorm 进行数据库访问。
我设法创建了检索数据的 DRY 函数,这主要归功于这个问题和答案
这有效,可以将所有记录编组为 json:
但是,我很难将单个记录编组为 json。我四处寻找迭代包含切片的界面{}的方法,找到了这个和类似的主题。试过:
当然,如果我指定rec.Data它*[]user可以工作,但是我将不得不为每个表重写这样的代码,这不是我想要的。
或者也许有一种完全不同的、更好的方法来解决这个问题——任何数据库记录到 json。
更新 现在的问题是,Xorm 需要结构吗?我将不得不阅读 xorm 的可能性和限制。
go - 我需要在 XORM 中关闭 sqlite3 数据库连接吗?
我用https://github.com/go-xorm/xorm我的 Go 软件来处理数据库连接。
在每个函数中,我都使用 call initdb 来获取新的 xorm 数据库会话(这是正确的方法吗?)
oracle - 如何通过 xorm 从 Oracle DB 获取表值?
我尝试使用 xorm 获取值并调用 engine.Find(&xxxx) 方法,但结果对象为空。我已经检查过它可以通过 engine.Query() 方法得到结果。这意味着数据库连接工作正常并且 . 如何把结果放进去usertest01?
安慰
mysql - 如何检测数据库断开连接,并使用 go-xorm 有效地重新连接 mysql、tiDB 等数据库?
我需要找到一种有效的方法来尝试重新连接,使用 go-xorm 库。目前,如果发生断开连接,连接将丢失并且进一步的查询失败,即使数据库在一段时间后恢复在线。
xorm 是否会在断开连接时生成事件?如果是这样,我该如何收听此事件。
我的想法是即使在 goroutine 中也通过通道监听断开连接.. 并触发重新连接逻辑(关闭当前会话和当前引擎并在其之上重新创建一个新引擎和一个会话。)
如果 xorm 没有生成断开连接事件,我将不得不每隔一段时间对数据库执行 ping 操作以检查是否存在我想避免的错误。
目前我正在通过以下方式建立连接:-
配置通过其他功能填充。
所以目前我觉得我可以实现重新连接的唯一方法是在一个单独的例程中不断地 ping 数据库,直到发生错误,然后关闭当前会话和引擎并创建新的。
这可以以更好的方式完成,使其基于事件吗?
我每次都必须创建一个新引擎和会话吗?
或者有没有更好的方法来处理所有这些,使用 go-xorm ?
go - 如何在 go-xorm 中为 postgres 声明外键关系?
我想在 golang 中为 postgres 使用 XORM 声明表之间的外键关系。
我尝试了以下模式来创建外键关系。
接着,
但是上面的代码没有创建外键,甚至在 Book 表中没有名为 author 的列。帮助我解决如何为 postgres 声明外键的问题。
go - xorm 示例不起作用:“运行时错误:无效的内存地址或 nil 指针取消引用”
基于这个例子,我尝试编写一个从数据库返回一些数据的程序。err := orm.Find(&sensorDataEntry)不幸的是,根据运行时控制台输出,(或多或少)相同的程序结构会导致内存错误。
我在这里想念什么?示例和我的程序都有使用 make() 创建的切片并在 Find() 方法中使用引用。
有问题的代码:
go - 模块声明为 X 但要求为 Y
我正在尝试grafana/grafana/pkg/tsdb在我的模块中使用包。我不认为这个问题是 grafana 特有的,但它是这样的:
它说包tsdb将 xorm 导入为github.com/go-xorm/core,但模块将自己声明为xorm.io/core。
查看 Grafana 的go.mod文件,它正在使用github.com/go-xorm/core并转到github.com/go-xorm/core,它说该项目现在已存档......它的go.mod文件确实将自己声明为xorm.io/core......
以及有关如何解决此问题的建议?
go - 如何使用 xorm 在 graphql 解析器中获取结构?
这是结构models_gen.go
中的查询功能resolvers.go:
当我检查 MySQL 时,学生表只包含“StudentID”和“Class”字段,没有“TestsHistory”。如何在解析器中获取“TestsHistory”?