问题标签 [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 投票
1 回答
994 浏览

javascript - 如何使用 Node.js 和 express 在 PostgreSQL 中不使用方括号换行来获取对象?

我正在使用 PostgreSQL 和node-postgres: pool, Node.js 和 express 来进行一些简单的查询,我得到了用方括号括起来的对象,但我想没有它。

员工DA.js:

conttoller.js:

结果:

我希望结果是:

正如这里所建议的,我看到在 SQL Server 中有一个命令可以处理这个问题:WITHOUT_ARRAY_WRAPPERPostgreSQL 中有类似的东西吗?我正在寻找比resolve(results.rows[0])

0 投票
2 回答
541 浏览

javascript - 选择当前值qith Node pg后如何增加postgres表列?

我正在创建一个具有用户、问题、答案、评论和投票表的应用程序。不确定这是否是一个好的决定,但我决定将投票表变成一个包含所有其他表的 ID 的连接表,而不是让每个其他表都有一个 vote_count 列,因为投票将属于所有其他表。

投票表是这样的——

我的模型看起来像这样-

我希望每个问题/答案/评论都有一个投票计数,并且在投票路线上发布的用户会增加或减少上述任何一项的投票。我该怎么做呢?我有一种感觉,我对投票表本身犯了一些错误。我是否应该坚持我最初的想法,即在每个表中都有一个 vote_count 列?

0 投票
0 回答
400 浏览

node.js - 节点 postgres 连接性能改进

我正在使用 nodejs (express) 编写后端,我的数据库是 PostgreSQL。我正在使用 node-postres (pg) 连接到 postgres 数据库。

目前我正在使用 pg.Pool 概念,这样我就可以连接客户端来服务请求/响应。我观察到 node-postgres 需要超过 2 秒才能连接到数据库,因此响应时间很长。

在 node-postgres 文档中,他们提到初始连接只需要 20 - 30 毫秒。但我看到超过 2-3 秒,建立连接。我对我的应用程序进行了大约 1000 个请求/秒的负载测试,但由于初始连接建立时间,平均响应时间相当长。我只有一个 SELECT 查询,在那里我得到了响应。响应处理时间非常少,只有连接和从数据库获取数据需要更多时间。

在收到响应等之后,我尝试了将客户端释放到池中的所有方法。现在我正在使用 pool.query ,它会在任务完成后负责连接以及将客户端释放到池中.

node-postgres 是否有任何替代方案可以为数据库操作提供更好的性能。

0 投票
1 回答
1520 浏览

node.js - 许多查询postgres(节点),没有并行查询?

我正在使用 postgres-node (pg) 包运行节点服务器。

我编写了一个程序,它一次向我的 postgres 数据库请求 n 个查询(例如 20,000 个)。

当我对几个想要同时查询 20,000 个的客户执行此操作时,没有并行性。这意味着,第二个客户端的请求将排队,直到第一个客户端完成他的所有查询。

这是postgres的正常行为吗?如果是,如果没有并行性,我如何防止一个用户获得所有资源(其他人必须等待)?

这是我的代码:

0 投票
0 回答
549 浏览

sql - 如何从 Node.js 将记录插入 Postgres?node-pg 没有很好的文档记录

1. 总结问题

我需要从 node-pg 将数据插入 Postgres。有一个使用“序列”创建的主键列。

node-pg 文档非常缺乏,我在生产中看到的大多数表都有一个自动增量主键和一个日期字段,文档中的示例除了两个文本字段(名称、电子邮件地址)之外没有提供示例。

除了我可以在任何地方找到的任何示例中显示的内容之外,还需要做一些不同的事情来插入具有自动增量 ID、日期字段和地理数据类型(纬度、经度)的记录/行。

如果我可以简单地获得具有自动增量 ID 的记录,我会很高兴并进入下一步尝试插入 TIMESTAMP 字段,然后是地理代码。

2. 提供背景,包括您已经尝试过的内容

我已经阅读了node-pg文档,我在github区域发布了一个没有回应的问题,我已经阅读了十几篇文章,作者通常很懒惰,没有为最常见的现实世界插入场景提供示例具有自动增量主键/ID 和至少一个日期字段的行。

所有示例仅插入两个文本字段。也许 node-pg 没有在关系完整性高度相关的企业生产环境中使用,我不知道,但这令人沮丧。

3.显示一些代码

这是创建表.sql

这是运行没有错误的 node-pg 代码,没有显示错误,但也没有插入任何内容。

4. 描述预期和实际结果,包括任何错误消息

数据未插入,我希望出现错误消息,但没有。提供的示例直接取自 node-pg 文档,但不起作用。

对于初学者,我需要插入一个自动递增的行,作为后续,如果有人想加入,我需要添加一个TIMESTAMP字段

我不知道为什么没有打印错误消息或插入失败并且不起作用的原因。

0 投票
1 回答
1552 浏览

node.js - Postgres sql脚本在nodejs中管理数据库

我正在尝试从 node.js 自动创建数据库并删除 postgres sql 上的表。我编写了一个运行良好的脚本,但它的行为方式很奇怪。让我先在这里发布代码然后解释这个问题。

db.js 文件

在这个文件中,我创建了单独的函数来创建和删除数据库表。我在 package.js 上的脚本如下所示:

最后,由于我已db.jscreateAllTables函数中添加了所有单独的创建表命令并将其添加到脚本中,因此我希望在从命令行运行命令时创建表npm run dbCreate

我的问题

当我执行命令npm run dbCreate时,它会创建总共 1 个或 2 个表。当我再次执行时,它会另外创建一个或两个表。因此,对于要创建的所有表,我必须重复执行命令,但我希望一次性完成。当我将createAllTables函数替换为dropAllTables. 有什么我做错了吗?我想在运行自动化测试时使用这个脚本。

0 投票
0 回答
78 浏览

postgresql - postgres 只返回一条记录,需要多条记录

所以我正在浏览这个应用程序,我成功完成了 api 请求,但在我的表中,我有多个记录,查询只返回第一列

0 投票
0 回答
390 浏览

node.js - pg-promise 停止打开新连接,没有错误信息

在我的express-js应用程序pg-promise中,有时会停止接受连接,即使是简单的select now()查询也是如此。这是非常随机的。我可以运行负载测试并让 100 个并发请求运行 10 秒,响应时间为 100+ req/s。然后突然它停止工作并且单个 curl 请求将无法工作,即使它除了进行select now()查询之外什么都不做。

发生这种情况时,有时它会通过重新启动节点应用程序来工作。有时即使这样也无济于事。

对于不访问数据库的路由,我始终可以访问 express 应用程序,因此我相当确定这与数据库连接有关。

pgp 的连接选项如下所示(已删除详细信息):

我测试数据库的简单快速路线如下所示:

我还有一个处理错误并记录它们的中间件,但发生这种情况时没有记录任何内容。有时任务事件pgpFunc.IInitOptions会触发,但永远不会将“ finish”属性设置为 true。该error事件永远不会触发。

感觉好像有什么东西阻塞了连接池,但我不知道是什么以及为什么。

pg-monitor 失败时的示例输出:

0 投票
1 回答
58 浏览

javascript - 当有效变量的数量最初未知时,如何添加到 Postgresql where 子句?

你好开发社区:)

堆栈:nodejs,Postgresql,npm:pg

如何在“where”子句中为有效或未定义的变量添加查询“and”语句?

例子

如何在未定义测试 2 时动态添加“and col2=${test2}”,并在未定义时保持原样。如何对像'and col3=test3 and col4=test4..and colN=testN'这样的多个条目做同样的事情?

目前,如果我在连接中添加“和”作为字符串,Postgresql 会返回错误。连接它的正确方法是什么?

谢谢你们 ;)

0 投票
1 回答
300 浏览

node.js - API 调用中所有函数的 1 db 连接

我有一条路线可以处理时间打孔的 API 调用。其中一个电话是“clock_in”。

这些函数中的每一个都将执行它自己的数据库连接,查询数据库以获取一些信息,然后响应用户或转到 next() 函数。

我正在使用“pg-poll”中的池。

我的连接看起来像这样。

并且所有功能的连接基本相同。

我想做的是只有 1 个pool.connect实例,然后 api 调用中的每个函数都将使用该连接来执行他们的client.query。我只是不确定我是如何设置的。

希望我的问题很清楚。我的所有代码都有效,只是效率不高,因为它为 1 个 api 调用建立了多个数据库连接。