问题标签 [node-postgres]

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 回答
34 浏览

node-postgres - Is done() required if node-postgres .connect() returns with an error?

From the docs it sounds like err is not null if there was a problem getting a client from the pool. If that's the case, does it mean done() doesn't need to be called?

or

0 投票
1 回答
51 浏览

javascript - node-postgres 错误对象的第一个“属性”

有人知道错误查询中我的错误对象中的第一个伪属性是什么吗?当我console.log('' + error);抓住要显示的括号内的文本时。除此之外,我不确定如何引用该属性。

0 投票
2 回答
15917 浏览

node.js - 具有大量查询的 node-postgres

我刚开始使用 node-postgres 和 postgres 一起玩 node.js。我尝试做的一件事是编写一个简短的 js 来填充我的数据库,使用一个包含大约 200,000 个条目的文件。

我注意到一段时间后(不到 10 秒),我开始收到“错误:连接终止”。我不确定这是否与我使用 node-postgres 的方式有关,或者是因为我向 postgres 发送垃圾邮件。

无论如何,这是一个显示此行为的简单代码:

它在大约 18,000-20,000 次查询后失败。这是使用client.query的错误方式吗?我尝试更改默认客户端编号,但似乎没有帮助。

client.connect() 似乎也没有帮助,但那是因为我有太多的客户,所以我绝对认为客户池是要走的路。

谢谢你的帮助!

0 投票
2 回答
1081 浏览

node.js - node-postgres 上的 postgres 复合类型

假设我有以下 postgreSQL 复合类型:

以及除该类型之外的存储过程:

我想使用 node-postgres 模块从 Node-js 调用这个过程。

我如何在 JS 中创建这样的类型?有没有办法将类型从 Node 传递到 Postgres 存储过程?

0 投票
1 回答
1763 浏览

node.js - 节点 pg 库自动提交与显式提交

我正在使用 Node pg 连接和使用我的 Postgres 数据库。我使用节点 js 中的 Postgres 函数来插入更新或获取数据。我还使用连接池来连接到数据库。

  1. 当使用节点 PG 时,假设我触发了一个插入查询,我需要调用 Commit 还是自动提交。
  2. 另外,如果我从节点调用一些函数来对数据进行一些修改,我是否需要显式调用 commit.
  3. 我想知道图书馆是否允许我做一些比在每次调用时都调用 commit 更好的事情。
  4. 请注意,这不是关于具有中间保存点的复杂事务或任何东西,而是基本的完整提交。
0 投票
1 回答
778 浏览

postgresql - “引发异常”是将错误从 pgplsql 返回到 node-postgres 的唯一方法吗?

说,我有一个 pgplsql 函数(例如buyItem),它返回一些东西(例如购买的项目参数)。在某些情况下,我想指出出现了问题,因此结果为空(例如,没有足够的钱购买所需的物品)。这只是一个常见的结果,我不会将其称为异常(并且绝对不会在数据库服务器上打印有关它的错误,就像raise exception那样)。

所以问题是:处理此类案件的最佳做法是什么?

0 投票
1 回答
40 浏览

sql - 如何一起加载2个相关数据集?(即帖子和评论)

我对 pg 相当陌生,并试图找出将一组帖子及其相关评论一起加载的最佳方法。

例如:我正在尝试获取与所有这些帖子相关的 10 个帖子和评论,例如 facebooks 墙,您可以在其中看到加载在同一页面上的帖子和评论的提要。我的架构看起来像这样:

我尝试在同一个 postgres 函数上加载帖子和评论,执行以下操作:

不幸的是,它在评论存在的地方重复了 N 次帖子,其中 N 是帖子的评论数。但是,第一个解决方案是我总是可以在获取数据后在 Node 中将其过滤掉

此外,当我尝试按 post.id 使用 group(以便更容易在节点中遍历)时,我收到以下错误:

我可以尝试的第二件事是发送一个我想要加载的 post_ids 数组并加载 pg_function 并将它们发送回来,但我不能完全正确地查询:

称之为:

但是,即使尝试从一个索引中获取值,我也会收到以下错误:

最后,最后的解决方案是简单地对 postgres 进行 N 次单独调用,其中 N 是带有评论的帖子数,因此如果我有 5 个带有评论的帖子,我会使用 post_id 对 postgres 进行 5 次调用,并从 Comments 表中进行选择。

我真的不知道该怎么做,任何帮助将不胜感激。

谢谢

0 投票
1 回答
108 浏览

postgresql - 无法理解 node-postgres 错误

使用 node-postgres,以下代码段可以正常工作:

但是如果我将以上内容更改为:

产生 - 未处理的拒绝错误:“%”处或附近的语法错误。

我怀疑这可能与用户字段的类型为“uuid”这一事实有关,但并没有真正的线索。参数以字符串形式提供:

任何人都能够阐明我在这里做错了什么?谢谢。

0 投票
1 回答
557 浏览

node.js - node-postgres:参数化插入查询缓存,第二次运行失败

我正在尝试使用node-postgres运行两个参数化插入查询:第一个指定主键列,第二个不指定。

第二个查询,即使没有指定主键列,也不能说有一个重复的主键。

我的 pg 表:

重现此问题的代码:

和运行这个的输出:

我从阅读node-postgres源代码中收集到的信息,参数化查询被视为准备好的查询,如果它们重用name参数,它们会被缓存;尽管通过挖掘它的来源,它似乎并不认为我的查询具有名称属性。

有人对如何避免这种情况有任何想法吗?

0 投票
2 回答
3894 浏览

node.js - Node-Postgres SELECT WHERE IN 动态查询优化

我们正在使用node-postgres包开发带有 Postgres 数据库的 Node/Express Web 应用程序。我们按照这个问题中的说明进行操作,并以这种方式编写查询:

data是一个包含字符串fileName和列名数组的对象columns。我们希望此查询从动态列数的“列”和“文件”表中提取信息。 db.query作为参数(query, args, cb),其中query是 SQL 查询,args是要传递给查询的参数数组,cb是与数据库结果一起执行的回调函数。

所以以这种方式编写的代码返回了正确的数据,但是(我们认为)它很难看。我们尝试了不同的方式将参数传递到查询中,但这是唯一成功返回数据的格式。

有没有更简洁/更简单的方式来传递我们的参数?(例如,以 node-postgres 将接受的任何方式传递参数,而不必从我的数组 + 非数组元素创建一个额外的数组。)

问这个是因为:

  1. 也许有更好的方法来使用 node-postgres 包/我们使用不正确,并且
  2. 如果这是解决此类问题的正确方法,则此代码补充了上述问题中的答案。