问题标签 [go-pg]

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.

0 投票
2 回答
4011 浏览

postgresql - 如何为 go-pg 中的每个查询动态设置表名?

我有一堆类似的临时表,我正在尝试使用go-pg的 ORM 进行查询。我找不到在选择期间动态更改查询表的方法:

这将temp_table1按照模型的TableName. 有没有办法将表名作为参数传递,以便我可以查询temp_table_X

(我不能使用 ORM 并使用 raw db.Query(),但我想看看是否有使用 ORM 的方法)。

0 投票
1 回答
5978 浏览

postgresql - 为多对多关系构建 go-pg ORM 查询

我有 3 个表格来代表我的多对多关系。客户、公司、公司_客户。

现在我要运行的查询是选择 company_id 为 1 的所有客户。原始 SQL 查询可能/可能看起来像这样:

我试过在 go-pg 中做这样的事情:

0 投票
1 回答
2499 浏览

postgresql - 插入关系 go-pg PostgreSQL

我有 2 个结构来表示ManyToMany关系。用户和备注

现在假设我想插入一个新用户并同时添加一些注释。

我希望这会插入一个用户及其注释:

然而,这只保存了用户而不是用户和注释。在 go-pg 中我必须手动执行此操作还是通过 ORM 自动执行此操作?

0 投票
2 回答
1023 浏览

postgresql - go-pg - pg: 找不到模型 id="," 的 dst 值

得到pg: can't find dst value for model id=","

我已经定义了以下模型

在尝试这个 -

这些是提出的查询

我想我panic: pg: can't find dst value for model id=","上线https://github.com/go-pg/pg/blob/master/orm/model_table_m2m.go#L53。在尝试使用 delve 进行更深入的挖掘时,我发现“前缀”的m.baseTable.ModelName+"_"计算结果为gr_product_,但可能应该是product_,因为columns包含

我无法弄清楚如何覆盖此默认行为(Golang 和 go-pg 都是新的),任何帮助将不胜感激,谢谢

0 投票
1 回答
3314 浏览

go - 在 Go 中包装一个 db 对象并在同一个事务中运行两个方法

为了更好地学习 Go,我试图将一系列接受 DB 连接作为第一个参数的函数重构为 struct 方法和一些更“惯用”的 Go。

现在我的“数据存储”方法是这样的:

这些功能工作得很好。orm.DBgo-pg 的 DB 接口

由于这两个函数接受一个数据库连接,我可以传递一个实际的连接或一个事务(实现相同的接口)。我可以确定发出 SQL INSERT 的两个函数在同一个事务中运行,避免在其中一个失败时在数据库中出现不一致的状态。

当我决定阅读更多关于如何更好地构建代码并使其“可模拟”以备不时之需时,麻烦就开始了。

所以我搜索了一下,阅读了Go 中的实用持久性文章:组织数据库访问并尝试重构代码以使用正确的接口。

结果是这样的:

这使我可以编写如下代码:

代替:

实际问题是我失去了在同一个事务中运行这两个函数的能力。在我做之前:

或类似的东西:

这或多或少是一回事。

由于函数接受连接和事务之间的公共接口,我可以从模型层抽象事务逻辑发送完整连接或事务。这让我可以在“HTTP 处理程序”中决定何时创建事务以及何时不需要。

请记住,连接是一个全局对象,表示 go 自动处理的连接池,所以我尝试了以下技巧:

这显然是个坏主意,因为虽然它有效,但它只有效一次,因为我们用事务替换了全局连接。以下请求会中断服务器。

有任何想法吗?我找不到有关此的信息,可能是因为我不知道正确的关键字是菜鸟。

0 投票
1 回答
1088 浏览

go - 在 go-pg ORM 中指定多对多关系的键

我有这两个具有多对多关系的模型:

表的模型person_contact_data是:

如果joinFKin ContactDatasstruct tag 为空 go-pg 在底层添加下划线,则生成的 SQL 部分如下所示WHERE ("contact_data"."contact_data_uuid" = person_contact_data."_contact_data_uuid")

有没有办法完全手动指定加入键?

0 投票
0 回答
245 浏览

go-pg - 如何将结构字段映射到 go-pg 中的列?

我在 Postgres 数据库中有一些表格,在程序中有模型

如何将 Person 结构中的“添加”字段映射到数据库中的 PersonTable?

0 投票
3 回答
4498 浏览

go - 将数组传递给 go-pg 查询

我正在使用 Go-pg,当我使用以下方式执行 sql 查询时:

其中params是如下结构:

并且sqlQuery

在实际的 SQL 查询中,我得到这样的查询:

是否可以正确传递 int 数组占位符以进行查询:

0 投票
1 回答
571 浏览

go - go-pg“属于”同一张表的 2 个字段

我正在使用https://github.com/go-pg/pg来处理这些东西,在制作基本属于关系时遇到了巨大的问题。

所以基本上我有一个表,其中包含列receipient_id 和sender_id,它们都指向同一个用户表。这是我的代码和结果:

这是实际的数据库:

0 投票
1 回答
6017 浏览

go - 如何使用 go-pg 查询一对多关系

我想查询一对多的关系。我有以下结构:

我正在编写如下查询:

这会返回 Appointments 结构的所有值,但 AppointmentParticipants 切片除外。它返回一个空切片。我接受了 go-pg 编写的查询,并在 psql 中验证了它确实从约会参与者表中返回了一条记录。

这是输出:{140 true 2018-09-01 00:00:00 +0000 UTC 2018-09-01 01:00:00 +0000 UTC {2018-08-15 22:52:11.326775 +0000 UTC 5 0001-01-01 00:00:00 +0000 UTC 0} 0 Session []}

有趣的是,这个查询确实返回了一个错误:pg: can't find column=appointments_id in model=Appointments但是我尝试使用 struct 标签来尝试解决这个问题,但无济于事。