问题标签 [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 回答
2110 浏览

node.js - 通过模块导出重用 pg-pool

阅读文档后:https ://github.com/brianc/node-pg-pool ,我有点担心重用该new Pool()方法。

文档建议我需要放置new Pool()之前exportsreturn就像这样

这样我可以重用Pool直到idleTimeoutMillisor client.release(),通过使用require()其他文件例如:

如果这是正确的,它是如何工作的?node.js 是否缓存new Pool(), 因为它不在里面module.exports

0 投票
1 回答
1444 浏览

javascript - Node.js pg 池在第二次执行时变慢

我遇到了一个奇怪的问题,我似乎无法解决。

我在 Node.js 应用程序中使用 pg 池,它在第一次执行时运行得非常快,然后在第二次执行时速度非常慢(30/50 秒)。

我已经阅读了 GitHub 页面https://github.com/brianc/node-postgres/wiki/Example上的文档

这似乎需要使用全局变量才能不创建多个池,我尝试如下操作。

我在下面有我的主服务器文件

哪个正在使用执行数据库查询的路由文件

当我向该路由发出获取请求时,一旦按下按钮,它就会执行得非常快,但之后任何时候按下它都会变得非常慢。

我在代码中遗漏了什么吗?是否有额外的步骤来处理多个请求?

0 投票
1 回答
3873 浏览

node.js - pg pool - 使用具有超时功能的 pg pool 的正确方法是什么

我需要一些关于 pg npm 的帮助。

我已经阅读了许多文章和示例,并且对以正确的方式使用 pg 池完全感到困惑。我读过的许多文章都是旧的。

我想向您展示我的一些代码以及我如何围绕 db 构建所有内容。我很少担心需要您的支持。

这就是我实施的方式:

我只在服务器启动时与 Postgres 建立一次连接。

请注意conn对象是全局的,我在程序中的每个地方都使用它。

然后我启动我的 HTTP 服务器。到达服务器的每个请求平均必须运行大约 25 个数据库查询。在程序的生命周期中,我使用相同的 conn 对象来触发查询,如下所示。代码中的每个函数仅包含以下用于查询的代码。

我正在使用“pg”:“^6.2.2”

——————————————————</p>

我的担忧:

  1. 我在使用游泳池吗?

  2. 如何正确利用池?

  3. 每次在代码中执行任何查询之前,我是否需要连接到 pg ,这意味着 conn.connect ?

  4. 如果无法访问数据库,代码在读取时挂起,然后在很长一段时间后超时,我该如何处理?有什么办法可以让我在想要的时间之后超时?

0 投票
1 回答
759 浏览

node.js - NodeJs 中 pg 和 pg-pool 模块的区别?

我正在研究涉及与 PostgreSQL 数据库连接的 NodeJs 项目。我遇到了两个包,即pgpg-pool。这两个包的创建者是相同的,所以这两个包的功能肯定有一些不同。任何想法,那些是什么?应该首选哪个包?

0 投票
1 回答
811 浏览

postgresql - node-pg-pool:如何在 Pool 中指定最大大小

我正在使用node-pg-pool在我的 REST API 中查询我的 Postgres db(AWS 中的主机,db.t2.micro)。

我担心如何为池的最大大小指定最佳数量。

我从https://github.com/brettwooldridge/HikariCP/wiki/About-Pool-Sizing获得了一些有用的公式来获取池大小

我需要知道 AWS 实例中使用了多少线程、内核和硬盘驱动器(例如:db.t2.micro)。我搜索了 AWS 文档,但仍然找不到所有这些信息

0 投票
2 回答
1843 浏览

javascript - Promise.all 中的多个 promise 被拒绝,到底发生了什么?

Promise.all([iterable])是全有或全无,这意味着它返回的 Promise 在 iterable 中的每个 Promise 解析时解析,或者一旦其中一个 Promise 拒绝就拒绝,原因是第一个 Promise 拒绝(doc)。

但是,如果可迭代的多个 promise 被拒绝,会发生什么?

在 VSCode 中,我尝试了以下示例,并故意使foo()bar()承诺都失败。当我在 VSCode 中调试时,我在 * catch(err => Promise.reject('error query bar()'))* 上收到一个错误,说发生了异常,我不明白为什么。

我认为这是因为当我调用 Promise.reject 时, Promise.all 已经收到来自 foo 函数的拒绝,该函数也失败了,但目前尚不清楚发生了什么。

如果我在调试选项中禁用“未捕获的异常”断点,则该异常不再显示。

这里到底发生了什么?

这是我在启用未捕获异常时看到的屏幕截图。 在此处输入图像描述

0 投票
1 回答
1840 浏览

node.js - 如何断开pg模块中的池

所以,我在节点 8.11.1 / express 4.16.3 / pg 7.4.2 中使用pg 模块

我尝试将池用于我的前端(只是选择),示例有些令人困惑。

连接时它只使用一个新池,然后它表明我必须做pool.end()

我这样写了我的代码,Error: Cannot use a pool after calling end on the pool如果我做了几次相同的查询,它就会打印出来。所以不行pool.end()

查询中,示例中没有断开连接 (?)

我终于让我的代码像pooling一样。它显示了pool.on('error', (err, client) => {函数,然后client.release()在池中使用,因为“pool.query 在内部直接委托给 client.query”我猜?

那么,在 pg 中使用 pool 的正确方法是什么,以及如何在每次查询或失败后断开连接?我想出了这个

我不知道这是否可以以任何方式缩短。比如,如果catch(e => { ////pool.connect()...需要或者它被覆盖pool.on('error', (err, client) => {...

此外,如果它像

但我不知道这是否正确,因为没有pool.connect,没有从该连接返回的客户端,也没有断开池的功能(只是为了结束它,再次以 结束Error: Cannot use a pool after calling end on the pool)。

请就正确的池使用和语法提出建议

谢谢

0 投票
1 回答
2701 浏览

javascript - 使用 Jest 测试 3rd 方模块中的匿名函数

我有一个使用pg( node-postgrelib) 模块的非常简单的模块,我想实现一个 Jest 测试并在pg模拟模块时我想运行它的回调函数来查看console.log运行情况,并且正在调用我的回调

我已经嘲笑了这个模块并试图监视和替换“查询”方法,但它失败并崩溃了,知道我做错了什么吗?

考试科目:

测试:

抛出的错误:错误:无法监视查询属性,因为它不是函数;给定的未定义

谢谢

0 投票
1 回答
1442 浏览

javascript - 即使在添加catch块之后,nodejs中的“UnhandledPromiseRejectionWarning”

我正在为 postgres 数据库编写一个 api 服务器,并且正在测试一些压力案例。我正在使用模块 node-postgres 中的一个池,并遇到了这个问题。

在启动服务器之前,我首先用尽了所有 postgers 连接。然后我尝试通过池运行查询。

我尝试在 promise 周围添加 try catch 块。在承诺内(在 catch 块内),没有任何帮助。

以下是我重现错误的一些测试代码。

这是我运行代码时得到的。

我想知道如何正确处理错误。这样它就不会被抛出。

0 投票
1 回答
2217 浏览

node.js - 无法在类型为 uuid 的列中设置 NULL 值,该列在使用 Node JS 的 Postgresql 中可以为空

我正在使用节点 pg 客户端,并且我有一个表

我正在尝试将 test_id 更新为 NULL,但我无法以编程方式执行此操作。

这是我的更新查询

它给了我一个错误

error: invalid input syntax for type uuid: "NULL"