问题标签 [pg-promise]

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

javascript - 如何从 pg-promise 获取和传播数据

我有以下条目数据:

这是一组狗的 id,我想使用 pg-routing 查询 Dog 表,以便获取所有狗的名称并返回一个 JSON 对象,如下所示:

我的代码:

当我运行此代码时,控制台显示:

为什么会这样?我该如何解决?

0 投票
1 回答
12294 浏览

postgresql - 参数化查询的查询格式

我正在使用pg-promisePostgreSQL 中的 like 子句执行选择查询。不幸的是,查询失败并显示错误代码08P01和错误消息

绑定消息提供 1 个参数,但准备好的语句“”需要 0

查询如下

我正在使用参数化查询作为

用于执行查询的 API 是

我查看了 pg-promise 示例,但它没有将 LIKE 子句与参数化查询一起使用。

环境细节是

pg 承诺:4.3.2

PostgreSQL:9.6

节点:5.7.1

更新:1 我可以使用queryAPI(纯文本 sql)运行查询,但不能使用each. 谁能解释为什么 LIKE 子句each在使用ParameterizedAPI 时失败。

0 投票
1 回答
564 浏览

javascript - 带有 pg-promise 的条件任务

我试图简单地从表中读取一个值,并根据返回值调用其他查询并返回组合结果。

让我们举一个简单的例子:表Usersidname并且emailid 假设如果emailid不为空,我们想调用电子邮件表并返回类似的结果{ id:[id], name:[name], email:[email]}

0 投票
1 回答
3855 浏览

javascript - 如何正确存根作为另一个承诺的一部分的承诺对象

我有一个基于客户端 cookie 执行身份验证的 promise 函数

getInitialState 是一个 promise 对象,如果 cookie 有效,它会调用数据库函数(另一个 promise 对象)。

我想在此处存根 db 调用以解析为用户名。但无论我尝试什么,它都不起作用

我尝试了两个库sinonStubPromisesinon-as-promised. 但两者似乎都导致超时错误,告诉我该db功能没有得到解决

我相信我没有正确地存根 db 函数

这些是我尝试过的各种方法

或者

或者

或者

都导致 mocha 超时错误

这是我的整个测试功能

出于某种原因,我相信 mocha/sinon 一旦调用 db.any 就会失去 pg-promise 上下文。不知道为什么。

0 投票
1 回答
1001 浏览

postgresql - 如何使用 pg-promise 打字稿中的 IConfig?

如何在我的代码中使用 pg-promise typescript 模块中定义的接口。例如:我想提一下“IConfig”类型的配置对象。

0 投票
1 回答
1720 浏览

node.js - 在 pg-promise 中返回

我使用pg-promiseNode.js 模块创建了一个包含所有查询的单独文件。虽然对于其中大多数我只是req, res在查询后使用,但对于一个我想返回一个值。这没用。它返回undefined

0 投票
1 回答
4368 浏览

node.js - Postgresql 捕获事务错误和回滚

我正在使用pg-promise来运行我的 SQL 查询。查询本身存储在外部 .sql 文件中。

当我执行事务时,如果发生错误(如预期的那样),Postgres 将中止事务。我遇到的问题是我在事务中止后尝试运行的任何单独查询都没有运行,而是收到以下消息: "current transaction is aborted, commands ignored until end of transaction block"。如果查询是在 psql 控制台中运行的,我可以通过在查询失败后发出 ROLLBACK 来解决这个问题。我不认为这是一个选项,因为我的应用程序使用的 SQL 位于外部文件中。我也不认为保存点是一种选择,因为如果出现故障,整个事务都应该被丢弃。

如果发生此错误,我将如何回滚 SQL 文件?

这是供参考的SQL:

先感谢您!

0 投票
1 回答
350 浏览

postgresql - pg-promise 'duration' 和 postgres 的 EXPLAIN ANALYZE 中的执行时间之间的区别?

我正在使用“结果”函数的数据对象中的“持续时间”属性来测量我的查询执行的持续时间。

我在 pgAdmin 中使用“EXPLAIN ANALYSE”尝试了相同的查询。

两者有很大的不同。

谁能说这是为什么?

这是衡量我的查询执行持续时间的正确方法。

0 投票
1 回答
1642 浏览

node.js - 为什么使用 pg-promise 的 AWS Lambda 执行时间很长

我开始使用 AWS Lambda 执行一个非常简单的任务,即执行 SQL 查询以从 RDS postgres 数据库中检索记录并根据结果创建 SQS 消息。

因为亚马逊默认只提供aws-sdk模块(使用 node 4.3 引擎),我们需要执行这个 SQL 查询,我们必须创建一个自定义部署包,其中包括pg-promise. 这是我正在使用的代码:

在测试我的 lambda 函数时,如果你查看 WatchLogs,函数本身运行大约需要 500 毫秒,但它说它实际上需要 30502.48 毫秒(参见屏幕截图)。

在此处输入图像描述 在此处输入图像描述

所以我猜解压缩我的 318KB 包并开始执行它需要 30 秒?这对我来说只是个玩笑还是我错过了什么?我尝试上传 zip 并将我的包上传到 S3 以检查它是否更快,但我仍然有相同的延迟。

我注意到 Python 版本可以在没有任何自定义打包的情况下本机执行 SQL 请求...

我们所有的应用程序都是用 node 编写的,所以我真的不想离开它,但是我很难理解为什么亚马逊没有为数据库交互提供基本的 npm 模块。

欢迎任何意见或帮助。在这一点上,如果需要 30 秒来运行每分钟触发的脚本,我不确定 Lambda 是否对我们有益......

有人面临同样的问题吗?


更新:这就是您不再需要时需要立即关闭连接的方式(再次感谢 Vitaly 的帮助):

0 投票
1 回答
4228 浏览

node.js - 使用 pg-promise 进行同步编程

我是来自同步编程背景的 node.js 和 pg-promise 的新手,它需要新的思维。

我将从在主程序逻辑之前运行数据库初始化的场景开始。

按照这个例子: https ://github.com/vitaly-t/pg-promise/wiki/Learn-by-Example#simple-select

我的代码是否会读作:

或者它会读作:

我的理解是,对于后者,消息将在记录被删除之前显示。

更新: 在阅读了许多关于承诺和回调的文章后,我了解到 pg-promise 使用 .then 和 .catch 链接成功和错误场景。我现在也相信我理解 pg-promise 命令应该放在函数包装器中,例如:

然后在我的代码中,我将使用一个简单的命令调用该函数,该命令将异步运行该函数:

然而,我仍然不确定这种异步编码和承诺的概念如何适合程序的整体结构,因为可以肯定,程序中的几乎所有内容都需要首先完成初始化。因此,整个程序是否不需要放在函数的“.then”部分?即顶层的唯一代码实际上是 intialiseDB() 函数?