问题标签 [node-pg-pool]

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 投票
0 回答
277 浏览

node.js - 如何在 nodejs pg 模块中创建动态查询功能?

例如:

现在,我必须为每个可能的查询创建一个查询

  • 设置标题在哪里 id

  • SET 标题,价格 WHERE id

  • SET price, "imageUrl" WHERE title

  • ...

这不是很干,因此我认为必须有更好的方法

编辑1:

这就是我想象的代码的样子。

我以三元表达的风格来做,但还有很多其他的风格。我认为这个想法类似于pug.js,ejs,handlebars等html的模板语言。除了为您的html编写几十个静态html文件之外,还有其他方法。

编辑2:

我使用字符串连接来实现快速而肮脏的解决方案,但我想知道它是否容易受到 SQL 注入的影响。代码也变得很长,代码可靠性/易理解性显着下降。

这是我目前的解决方案:

0 投票
1 回答
353 浏览

node.js - 如何在 Node / pg-pool 中参数化 Postgres 数组值

我正在style text[]使用 contains 运算符查询数组列 () @>。我的原始查询是:

当我将它放入节点(使用pg-pool)并尝试对其进行参数化时,值引用周围的大括号似乎阻止它正常工作。请注意以下示例:

参数化这个的正确方法是什么?

0 投票
0 回答
84 浏览

postgresql - 为什么在客户端进程被杀死后连接仍保留在 pg_stat_activity 中?

我正在调试 Postgres 的“抱歉,已经有太多客户”问题,并且刚刚了解了该pg_stat_activity表。我注意到其中有很多悬空的空闲连接用于不存在的 PID,这里只是两个示例:

我很可能用 Ctrl-C 杀死了创建这些连接的测试进程。

我必须从根本上误解一些东西,因为我本以为 Postgres 会发现套接字已损坏,然后关闭这些连接,并在必要时回滚事务。据我在https://dba.stackexchange.com/questions/81408/is-a-postgres-long-running-query-aborted-if-the-connection-is-lost-broken中阅读,当我终止这些进程我的操作系统应该在 TCP 套接字上发送 RST,而 Postgres 应该得到它。

我正在通过 Docker for Mac 运行 Postgres,我认为这不会以某种方式干扰这一点?

我不认为它应该有所作为,但我正在使用node-pg,一些通过池连接,另一些通过单个客户端实例(例如 for LISTEN)。

0 投票
2 回答
121 浏览

sql - 如何在一张表中插入多个对象?

有一个表entityLinks,我想通过一个查询插入多个值。该表是使用此查询定义的:

打算用于插入的数据如下所示:

  1. 标签数组,如['mytag1', 'mytag2, ...] ;
  2. 与标签相关的实体的ID (例如帖子)。

如果需要,我可以将它们组合成对象数组([{id: 1, tag: 'mytag1'}, {id:1, tag: 'mytag2'}, ... ])。此查询中的所有标签的 ID 相同,但从一个查询到另一个查询不同。

我知道如何插入多个标签

($1 - 是一个变量,像this.pool.query(query, [tags])这样作为值传递);...但是当我尝试相同的方法时,unnest已经取消了所有级别的排列 ([ [1, 'mytag1'], [1, 'mytag2'],... ] => "1, 'mytag1', 1, 'mytag2', ...“。错误是:错误:格式错误的记录文字:“1”(1 - 是 id)

我尝试使用对象数组,但收到此错误: 格式错误的记录文字:“{“id”:179,“tag”:“myTag1”}”

基本上我想插入与相同 id 链接的不同标签(一个查询相同),但也有兴趣了解如何一次插入多个对象(将来可能会有用)。

提前致谢!

0 投票
1 回答
460 浏览

postgresql - 关系“博客”的“标题”列中的空值违反非空约束

我正在为后端使用 express js 构建一个小博客,但我遇到了一个问题:我在控制台中收到此错误

关系“blog”的“contentblog”列中的空值违反了非空约束

代码:

0 投票
0 回答
234 浏览

pg-promise - 连接断开后,pg-promise 不会重新连接池中的客户端

我正在使用pg-promise(和底层的pg-pool库)。

当我短暂地拔掉我的 pg 数据库上的插头(断开 TCP 连接)时,我收到connect ETIMEDOUT错误(预期的)但是池需要很长时间才能重新建立连接。就像在 10 分钟的顺序。

这是我如何使用的片段pg-promise

我从作者那里看到了这个潜在的答案,但我不想仅仅为了重新建立池而杀死我的整个过程。

除了重新启动nodejs进程之外,有没有办法强制池中的客户端重新连接?

提前致谢。

0 投票
2 回答
272 浏览

node.js - nodejs pg-pool 似乎没有池化

我一直试图让 nodejs 在我的应用程序中汇集 postgresql 连接,但没有成功。这是我做的一个独立测试:

我得到的结果是:

如您所见,它引发了连接超时,这意味着在我创建池时它没有创建连接。在创建池时,我尝试了各种参数组合,包括使用keepalive: true,但似乎都没有使 pg-pool 真正成为池连接。我也尝试过 pg 而不是 pg-pool。但是得到了完全相同的结果,尽管我后来发现它基本上是相同的代码。

如果我使用运行时间较长的查询运行它,我可以连接到 psql 中的数据库并运行

并观察我的 IP 地址的连接数上升然后再下降。

我做错了什么还是 pg-pool 坏了?

我在 ubuntu xenial 服务器上使用 nodejs v10.22.1。

0 投票
1 回答
24 浏览

postgresql - 无法使用 Node-PG pool.query 获得正确的错误

我是一个尝试使用 PRN 堆栈制作社交媒体网站的初学者,我在使用 Postman 进行调试时遇到了删除请求的问题。基本上,我以用户 X 的身份登录,创建了一个帖子,注销,然后以用户 Y 的身份登录并尝试删除该帖子。Post deleted with ID: ${post_id} 然而,当我去检查数据库时,我得到了响应,帖子仍然存在。尽管这是我在功能上希望它做的事情,但我希望抛出正确的错误。我错过了什么?

我从身份验证器中间件接收登录的用户 ID:

在我看来,我的 PG 请求中的逻辑 AND 运算符有些问题……非常感谢任何见解!

0 投票
0 回答
18 浏览

pgpool - pgpool 的自动故障转移问题

我已经使用 pgpool 设置了一个 3 节点集群,其中一个节点充当主节点,其他 2 个节点保持备用。我面临的问题是 DELEGATE_IP / VIP 在从 PRIMARY 到 STANDBY 的故障转移期间没有转移控制权。我能够通过 VIP、主机和端口连接到主数据库,并且 HA 正在复制到备用数据库。但理想情况下,我希望 pgpool 在故障转移期间降级旧的 MASTER 并提升/选择新的 MASTER 节点(来自备用服务器之一)。但这并没有发生。有人可以让我知道需要在 pgpool.conf 或任何其他配置文件中设置的所有参数以使自动故障转移成功发生吗?我的 pgpool 配置文件超过 1000 行,所以我们需要检查的任何特定参数,请告诉我。

提前致谢, Ruthran G

0 投票
1 回答
92 浏览

node.js - 如何在单个 GET 请求中创建多个查询

我正在使用node-pg并希望在单个GET请求中进行多个查询。

例如,考虑我做了两个这样的查询:

此代码导致以下错误Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client

有没有办法在同一个请求中进行这两个查询,GET以便可以在同一页面上使用包含结果的对象?