问题标签 [pg-promise]

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 投票
1 回答
1339 浏览

javascript - pg-promise 为选择查询创建自定义过滤器

我正在处理的功能是获取一个具有 7 个不同键值的输入对象,并且每个键值都可以是未定义的或未定义的。我想根据输入中存在的那些键值过滤我的数据库。例如,如果只input.userID存在我想运行这个查询:

否则,如果 input.userID 和 input.startTime 都存在,我想这样做:

我所做的是我创建了一个这样的参数和键对象:

addFilterToTheQuery是我自己实现的一个简单功能。我基本上做了 7 个 if 案例。然后我必须使用这些键和参数值以可能需要另一个巨大的 switch case 代码的方式传递给查询函数。

这是唯一的方法吗?有没有更好的方法来摆脱这段代码中的冗余?

0 投票
2 回答
3451 浏览

node.js - 如何使用 pg-promise 连接到没有密码的 Postgres 数据库?

我正在尝试初始化与我的 PG 数据库的连接:

但我不断得到:

错误:连接 ECONNREFUSED 172.20.0.3:5432

知道为什么吗?

已解决:在 postgresql.conf 文件中设置 listen_addresses = '*'

0 投票
1 回答
2766 浏览

node.js - 如何使 pg-promise 将行作为数组返回?

我们如何让pg-promise从查询中返回一个行数组,而不是行对象数组?

0 投票
2 回答
27661 浏览

node.js - Verify database connection with pg-promise when starting an app

I am building an express application that connects to a postgres database using the pg-promise module.

I would like to ensure that the database connection is successful when starting the application server. In other words, if the connection to the database fails, I'd like to throw an error.

My server.js file is as follows:

The current configuration will start the express server regardless of whether the database connection is valid, which is not the behavior I would like.

I tried browsing the docs but couldn't find a solution. I also tried

but that didn't work because pgp does not return a promise.

0 投票
1 回答
14335 浏览

node.js - 使用 pg-promise 插入多条记录

我有一个需要插入多条记录的场景。我有一个表结构,如 id(它是来自其他表的 fk)、key(char)、value(char)。需要保存的输入将是上述数据的数组。示例:我有一些数组对象,例如:

在 MS SQL 中,我会创建 TVP 并通过它。我不知道如何在 postgres 中实现。所以现在我想做的是使用 pg-promise 库将列表中的所有项目保存在 postgres sql 的单个查询中。我无法从文档中找到任何文档/理解。任何帮助表示赞赏。谢谢。

0 投票
1 回答
1755 浏览

node.js - 使用 pg-promise 查询多对多关系的最佳方法

例如,我想从 db 获取用户信息、电子邮件和它的角色,并创建一个对象,如:

我需要查询三个表:

  • Users表有id, firstname, lastname.
  • Emails表有type, email, user_id.
  • Roles表有role, title, user_id.

根据pg-promise的 wiki,我几乎可以肯定它必须使用Tasks来完成,但不确定你将如何链接它们。

更新在我的实际项目中,我必须插入一个产品并使用生成的 id 来插入属性。如果您遇到类似情况,请在此处添加我的代码:

0 投票
1 回答
386 浏览

pg-promise - 在 pg-promise 中插入序列类型的 id

在 pg-promise 中,当主键是 Serial 类型时,如何插入数据?省略字段 id 不会在调用中创建响应。

下面的代码在 catch 中没有产生错误(也没有执行then分支)。

桌子:

手动提供 id 没有问题。

当然,SQL 在 PGAdmin 中运行良好。

0 投票
2 回答
6340 浏览

javascript - 在参数数组中传递整数数组

我正在尝试按照pg-promise docs中的建议在 pg-promise 的参数数组中传递一组参数。

但它不起作用,我在参数列表后返回了一个“缺少 )”错误。或者“运算符不存在:整数 = 整数 []]”错误,如果我将参数替换为:

当然,如果我像这样通过它,它会起作用:

当涉及其他参数时,它是传递值数组的正确方法吗?

我还尝试删除 $2 周围的括号,但没有成功。

0 投票
1 回答
1665 浏览

node.js - 使用 NodeJS 和 Postgres 的交易链中的可选 INSERT 语句

我正在使用需要在数据库中插入 3次的NodeJS/Postgres构建一个简单的 web 应用程序。

为了控制我正在使用的语句链pg-transaction

我的问题是我必须始终运行 2 个第一个 INSERTS,但我有条件运行第 3 个。

也许我的代码可以以更好的方式构建(欢迎提出建议)。

这是一个伪代码:

每次查询后重复三次相同的if (err) {}看起来很丑陋。

试图检查一些选项我发现了 Sequelize,但看不到用它解决这个问题的方法。

欢迎任何建议!

谢谢!

0 投票
1 回答
1813 浏览

javascript - Pg-promise 性能提升:ON CONFLICT

我正在尝试遵循 pg-promise 库作者在此处推荐的性能模式。

基本上 Vitaly 建议使用 inserts 这样做:

使用以下辅助函数:

我的问题是,当插入物有限制时,你会怎么做?我的代码:

显然,我无法访问参数,因为我不在异步循环中。

我也尝试做这样的事情:

但当然,它不尊重 postgresql 的标准。

有没有办法做到这一点?

谢谢 !