问题标签 [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.
node.js - 通过模块导出重用 pg-pool
阅读文档后:https ://github.com/brianc/node-pg-pool ,我有点担心重用该new Pool()
方法。
文档建议我需要放置new Pool()
之前exports
,return
就像这样
这样我可以重用Pool
直到idleTimeoutMillis
or client.release()
,通过使用require()
其他文件例如:
如果这是正确的,它是如何工作的?node.js 是否缓存new Pool()
, 因为它不在里面module.exports
?
javascript - Node.js pg 池在第二次执行时变慢
我遇到了一个奇怪的问题,我似乎无法解决。
我在 Node.js 应用程序中使用 pg 池,它在第一次执行时运行得非常快,然后在第二次执行时速度非常慢(30/50 秒)。
我已经阅读了 GitHub 页面https://github.com/brianc/node-postgres/wiki/Example上的文档
这似乎需要使用全局变量才能不创建多个池,我尝试如下操作。
我在下面有我的主服务器文件
哪个正在使用执行数据库查询的路由文件
当我向该路由发出获取请求时,一旦按下按钮,它就会执行得非常快,但之后任何时候按下它都会变得非常慢。
我在代码中遗漏了什么吗?是否有额外的步骤来处理多个请求?
node.js - pg pool - 使用具有超时功能的 pg pool 的正确方法是什么
我需要一些关于 pg npm 的帮助。
我已经阅读了许多文章和示例,并且对以正确的方式使用 pg 池完全感到困惑。我读过的许多文章都是旧的。
我想向您展示我的一些代码以及我如何围绕 db 构建所有内容。我很少担心需要您的支持。
这就是我实施的方式:
我只在服务器启动时与 Postgres 建立一次连接。
请注意conn
对象是全局的,我在程序中的每个地方都使用它。
然后我启动我的 HTTP 服务器。到达服务器的每个请求平均必须运行大约 25 个数据库查询。在程序的生命周期中,我使用相同的 conn 对象来触发查询,如下所示。代码中的每个函数仅包含以下用于查询的代码。
我正在使用“pg”:“^6.2.2”
——————————————————</p>
我的担忧:
我在使用游泳池吗?
如何正确利用池?
每次在代码中执行任何查询之前,我是否需要连接到 pg ,这意味着 conn.connect ?
如果无法访问数据库,代码在读取时挂起,然后在很长一段时间后超时,我该如何处理?有什么办法可以让我在想要的时间之后超时?
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 文档,但仍然找不到所有这些信息
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 函数的拒绝,该函数也失败了,但目前尚不清楚发生了什么。
如果我在调试选项中禁用“未捕获的异常”断点,则该异常不再显示。
这里到底发生了什么?
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
)。
请就正确的池使用和语法提出建议
谢谢
javascript - 使用 Jest 测试 3rd 方模块中的匿名函数
我有一个使用pg
( node-postgre
lib) 模块的非常简单的模块,我想实现一个 Jest 测试并在pg
模拟模块时我想运行它的回调函数来查看console.log
运行情况,并且正在调用我的回调
我已经嘲笑了这个模块并试图监视和替换“查询”方法,但它失败并崩溃了,知道我做错了什么吗?
考试科目:
测试:
抛出的错误:错误:无法监视查询属性,因为它不是函数;给定的未定义
谢谢
javascript - 即使在添加catch块之后,nodejs中的“UnhandledPromiseRejectionWarning”
我正在为 postgres 数据库编写一个 api 服务器,并且正在测试一些压力案例。我正在使用模块 node-postgres 中的一个池,并遇到了这个问题。
在启动服务器之前,我首先用尽了所有 postgers 连接。然后我尝试通过池运行查询。
我尝试在 promise 周围添加 try catch 块。在承诺内(在 catch 块内),没有任何帮助。
以下是我重现错误的一些测试代码。
这是我运行代码时得到的。
我想知道如何正确处理错误。这样它就不会被抛出。
node.js - 无法在类型为 uuid 的列中设置 NULL 值,该列在使用 Node JS 的 Postgresql 中可以为空
我正在使用节点 pg 客户端,并且我有一个表
我正在尝试将 test_id 更新为 NULL,但我无法以编程方式执行此操作。
这是我的更新查询
它给了我一个错误
error: invalid input syntax for type uuid: "NULL"