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

node.js - pg-promise 将整数作为字符串返回

我对包含类型列的表进行了这个简单的查询bigint

但是,当我查询它时,pg-promise将此列的值作为字符串返回。我在文档中找不到有关此的信息。这是标准行为吗?

data采用以下形式,id 为 string 而不是 int:

有什么可以指示pg-promise返回实际类型吗?

0 投票
0 回答
334 浏览

sql - Timestamptz,相同的时间点,但具有“设置本地时区”的相同查询的不同表示

我正在尝试构建我的 Web 应用程序,它将数据存储在地球上某个位置上运行的 PostgreSQL 数据库服务器上,并让用户从其他位置连接,因此可能与我的服务器不同的时区和偏移量。

我需要根据每个连接用户显示操作的日期和时间,例如创建的帖子、编辑的帖子、提交的评论等。这就像 StackExchange。但是,我遇到了时区和偏移量的问题,如下所述:

在我的pgAdmin3 SQL Editor中,一切似乎都正常。例如,当我在pgAdmin3 SQL 编辑器中编写下面的查询时set local time zone 'Europe/Oslo',我得到了正确的poststagscreated_at字段+2,输出中的偏移量。在输出行中,表的字段created_at是 ,posts2016-08-29 19:15:53.758+02的同一行created_at是。tags2016-08-29T19:15:53.758+02:00

但是,当我将它放在我的Nodejs Express.js服务器中的路由函数中,并使用pg-promise作为连接库时,我只得到正确的表字段,其中的时间按预期附加了时区偏移量,我得到了表的字段在没有像预期的那样。 tagscreated_atOslocreated_atpostsUTC

所有时间戳的定义timestamp(3) with time zone NOT NULL DEFAULT CURRENT_TIMESTAMP如下所示。此外,如果没有设置set local time zone,我会得到相同的行为,对于第一个表,我会得到UTC时间,对于后者,我会得到带有服务器偏移量的时间戳。

set local time zone指令不绑定所有查询吗?我的方法中缺少什么?

我使用的示例查询:

express.js 路由函数示例:

我使用pg-promiseExpress.js http 服务器获得的结果。请注意实际上应该指向 UTC 中相同点的不同时间戳,这是正确完成的,以及未正确完成的表示:

posts这里使用的和tags表的定义:

0 投票
1 回答
347 浏览

node.js - 使用 pg-promise 和 bluebird 嵌套条件承诺

我要做的就是运行一个查询,检查一个电子邮件地址是否已经注册,如果是则拒绝请求,如果没有运行一些验证,然后在我的用户表中创建用户。这有点像壳,代码最初基于https://github.com/vitaly-t/pg-promise-demo,代码很棒,但我不是。承诺对我来说完全是荒谬的,我不知道我应该返回什么或在哪里返回。

这段代码运行并实现了它应该做的,但随后它遇到了问题并发回“无法读取未定义的属性'then'”。当我尝试链接第二个 .then 以使其不在第一个 .then() 中时,我收到错误,我试图在 res 已发送后更改它。

有人可以帮我理解这里出了什么问题以及如何解决吗?

0 投票
1 回答
687 浏览

javascript - 如何使用 Promise 在 NodeJS 中链接 Postgres 查询然后 GET 请求

在我的 NodeJS 应用程序中,我需要对 Postgres 进行查询,然后我需要对 PG 结果中的每一行进行 GET 请求。并在一个数组中返回所有 GET 结果。

我的代码有什么问题?

第二个问题,如何在最终结果数组中包含来自 PG 查询的 ID?

0 投票
1 回答
770 浏览

node.js - 如何将 postgres 节点 pg 结果输出为表(数组数组)而不是哈希数组

我正在使用 node.js pg-promise 模块来访问 postgres 数据库。一切都很好,除了结果总是以行数组的形式返回,每行都是一个带有键和值的 json 对象。这似乎很浪费带宽 - 超过一半的数据进入每个字段的键。

我得到的是一个哈希数组:

我想要的是一个数组数组:

有没有办法将数据提取为数组数组?行数组,每行是字段值的有序列表,其顺序与它们在 SELECT 语句中出现的顺序相同。如果它们只是严格的列顺序的裸数据,它将有助于提高查询速度,并有助于解包结果数据。我一直在寻找一整天,找不到任何东西。

0 投票
1 回答
669 浏览

node.js - pg-promise 用 $() 插入文本

当文本包含字符串“$(...)”时,我无法将文本插入数据库,因为我的代码返回错误:属性“...”不存在。

我是否缺少某种“这只是文本”属性?

谢谢

编辑错误仅在使用 $() 语法将其他变量添加到整个 SQL 调用时发生

输出

0 投票
1 回答
2940 浏览

node.js - 使用 pg-promise 的连接

所以我使用 pg-promise 来查询我的数据库。由于我使用的是 heroku postgres(免费版),因此最大连接数为 20。

要连接到数据库,我使用

我正在使用 dbclient 变量来运行查询,例如

即使我将池大小设置为 10,连接数也会无限增加,并且我的应用程序会崩溃。

我该如何解决这个问题?每次运行查询时都必须释放客户端吗?

编辑:

所以我编辑了我的代码,这正是我现在使用它的方式,我仍然有同样的问题。

0 投票
1 回答
8891 浏览

javascript - 无法使用 pg-promise 在 NodeJS 中查询 PostgreSQL 数据库 - “关系不存在”

我试图让 pg-promise 在 NodeJS 中工作以允许我连接到我的 PostgreSQL 数据库。node 和 postgre 都在运行 Ubuntu 的 codeanywhere 节点框中运行。

以下是相关代码:

运行node bot.js打印以下内容:

并将以下内容打印到/var/log/postgresql/postgresql-9.3-main.log

我做错了什么?我想它应该是 db.any() 的东西,因为下面的代码确实有效:

输出是一个看起来近似于db对象的东西的返回,但这不是我需要的......

我见过其他提到大写的stackoverflow问题。具体来说,他们说 postgresql 将使您的输入全部小写,不带双引号。消除任何此类相关性概念:

这种关系确实存在。

我错过了什么?

0 投票
2 回答
2306 浏览

node.js - Node / Express & Postgresql - 当没有行匹配时

您好,我是 Postgresql 的新手,我想了解如何在抛出错误时处理 0 结果。本质上,如果用户不存在,我想获取用户,如果不存在则返回 null,并有一个错误处理程序。以下是我正在使用的当前代码。任何有关更好方法的提示都值得赞赏!

控制台输出:

0 投票
1 回答
96 浏览

postgresql - 在不创建函数的情况下使用 PL/pgSQL 条件

我想创建一个 Postgres 表并对其进行更改,但前提是它首先不存在。我不认为这应该是一个函数,因为它在应用程序启动期间只运行一次。我试图从pg-promise nodejs lib using执行这段代码client.none(sql, params),但它给了我一个错误syntax error at or near "IF",所以我猜它必须是其他一些执行方法,或者我的 SQL 从根本上是有缺陷的。谢谢!