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

node.js - NodeJS、promise、streams - 处理大型 CSV 文件

我需要构建一个函数来处理用于 bluebird.map() 调用的大型 CSV 文件。鉴于文件的潜在大小,我想使用流式传输。

这个函数应该接受一个流(一个 CSV 文件)和一个函数(处理来自流的块),并在文件被读取结束(已解决)或错误(被拒绝)时返回一个承诺。

所以,我开始:

现在,我有两个相互关联的问题:

  1. 我需要限制正在处理的实际数据量,以免造成内存压力。
  2. 作为processor参数传递的函数通常是异步的,例如通过基于 promise 的库(现在:)将文件的内容保存到 db pg-promise。因此,它将在记忆中创造一个承诺,并不断地继续前进。

pg-promise库具有管理此功能的功能,例如page(),但我无法提前说明如何将流事件处理程序与这些 Promise 方法混合使用。现在,我readable在每个之后的部分的处理程序中返回了一个承诺read(),这意味着我创建了大量承诺的数据库操作,并最终因为我达到了进程内存限制而出错。

有没有人有一个我可以用作跳跃点的工作示例?

更新:可能不止一种给猫剥皮的方法,但这有效:

有人认为这种方法存在潜在问题吗?

0 投票
4 回答
25488 浏览

node.js - 如何使用 Node JS 设置 Babel 6 以在我的服务器端代码中使用 ES6?

我已多次阅读提供的文档: Node API Babel 6 Docs

我开始按照 Learn by Example 教程学习 pg-promise,并且更愿意使用 ES6 并使用 Babel 转换为 ES5,但我不确定一些事情:

  1. 安装 babel-core 后,我使用什么预设以及在哪里/如何配置它以使其工作?

我不清楚我放了哪个文件: require("babel-core").transform("code", options); 该代码的哪些部分是占位符。当我使用该代码时,我是否只在某个地方使用它一次,然后我可以在每个其他文件中使用 ES6?这将如何实现?

  1. 我阅读了这个 .babelrc 文件,并想确认实际文件名是“.babelrc”还是只是文件扩展名以及与我的项目的根目录相关的位置,我将该文件放在哪里......以及如何做我链接到它?

  2. 如果我正在使用pg-promise,我应该使用 ES6 和 Babel 还是将运行 : npm install 如测试部分中描述的 pg-promise 就足够了,并且尝试使用 ES6 会产生更多问题?

如果在我的服务器端开发过程中出现需要,我希望利用 let 和 const 。

  1. node+babel+pg-promise 服务器设置是否有标准文件结构?

编辑 值得注意的是,我还阅读了带有 Babel-Node 的 Node JS,并看到应该避免使用它。由于类似的原因,最底部的最终答案对我来说真的没有意义,我在遵循 Babel 提供的实际文档时遇到了麻烦。

0 投票
1 回答
2052 浏览

json - 将 JSON 插入/更新到 Postgresql 列 WHERE myvar = myval

我正在尝试将 JSON 插入数据类型为 JSON 的 Postgresql 列中,但我无法找到如何执行此操作。据我所知,这是不正确的,因为它只是每次都覆盖它,而不是添加一个新的密钥对。

我正在使用 pg-promise 节点模块来执行这些查询。这是我到目前为止所拥有的:

'myVar' 也应该更新为变量值,而是将其视为字符串。我怎样才能得到 'myVar' 的实际值,而不是按字面意思对待它。

谢谢,

0 投票
1 回答
79 浏览

angularjs - 事件触发的 AngularJS 应用程序上的多个发布请求

我正在做一个实时应用程序,在应用程序的一部分中,当触发事件时,一些数据会发布到服务器,然后将其更新到数据库。问题是每个浏览器连接实例都发布相同的数据,从而导致来自实例的多个数据库更新。我似乎看不到解决这个问题的方法。请协助。

0 投票
2 回答
17444 浏览

javascript - 我应该在哪里初始化 pg-promise

我刚开始学习nodejs-postgres并找到了pg-promise包。我阅读了文档和示例,但我不明白应该将初始化代码放在哪里?我使用 Express,我有很多路线。

我必须将整个初始化(包括pg-monitor初始化)放到我想查询数据库的每个文件中,或者我需要将initalize/configure它们包含在 server.js 中?

如果我只在 server.js 中初始化它们,我应该在需要数据库查询的地方包含其他文件吗?

换句话说。我不清楚 pg-promise 和 pg-monitorconfiguration/initalization是全局操作还是本地操作?

还不清楚我是否需​​要为每个查询创建一个 db 变量并结束 pgp?

0 投票
1 回答
451 浏览

pg-promise - pg-promise 在六个查询后挂起

我正在使用 pg-promise 开发一个项目。我尝试使用 pg-promise 查询几种不同的方式,但它们似乎都导致它在 6 次查询后挂起。

在我看来,连接没有被关闭,但我在文档中找不到关于在查询后关闭连接的任何内容。

这就是我所拥有的

我也尝试使用共享连接、对象,但文档建议使用任务。有谁知道这里发生了什么?

0 投票
1 回答
925 浏览

javascript - 如何在 Express 中将 pg-promise 的结果返回给我的控制器?

正如我在 RoR(MVC 概念)中所知道的,我的控制器应该从模型中获取结果,并在处理它并渲染视图之后,如下所示:

现在我有一个 Express 服务器,我尝试使用 PostgreSQL(pg-promise) 和 jam 以 MVC 方式构建它。

目前,我有一个控制器文件,其代码如下:

在我的模型中,我有一个 all 函数来处理它:

但我想要做的是将 Movies.all 的数据库查询结果返回到我的控制器,就像我们在 RoR 通常或典型的 MVC 方式中所做的那样。我想事情会是这样的:

但是因为这将返回一个承诺或由 Async 引起(我不确定),所以我无法实现它,我该怎么办?

0 投票
1 回答
2296 浏览

node.js - Postgresql中带有json数组的参数化查询

我想使用参数化查询将 array_prepend 调用到 json[] 中。我正在使用 pg-promise npm 包,但这在引擎盖下使用了普通的 node-postgres 适配器。

我的查询是:

与“$ 1”相同。

它适用于非参数化查询。

上面的代码产生:

{ [错误:“hiya”处或附近的语法错误]

这样做的主要原因是为了避免 sql 注入(文档说它们在使用参数化查询时充分转义)。

0 投票
1 回答
1668 浏览

node.js - Node JS Soap 服务器(node-soap)从 postgres 回调传递值

我有一个问题,我正在使用 node-soap 和 pg-promise。我有一个问题,当我向soap服务发出请求时,响应会延迟,换句话说,我必须在响应返回之前发送两次请求(使用soap ui):

我想知道我是否没有将数据库调用的响应正确传递给节点肥皂回调:

以下是来自 node-soap 网站的示例代码:

这是我的代码:

每次我在 SOAPUI 中发出请求时,我的所有 console.log() 都会显示返回的数据,但直到我第二次发送请求时才返回响应:

例如

点击按钮一次:vin = 12312364812736498

我希望 John doe 信息返回 - console.log(John doe's info) SOAP RESPONSE = empty

点击按钮两次 console.log(John doe's info) SOAP RESPONSE = John doe's info

如果我使用提供的肥皂客户端示例代码并发出请求:

console.log 每次都有效:

我是否有 global.results 值具有竞争条件的范围问题???

我很确定我的代码可能有问题,因为我是 Node JS 等的新手......

我是否错误地传递给了肥皂服务器的回调?

任何见解将不胜感激。

0 投票
1 回答
12333 浏览

javascript - 如何使用 pg-promise 一次从多个查询中获取结果?

目前我有以下代码来获取两个查询的结果

不知何故,我认为这是不对的。如果我需要在返回回调之前获取许多查询的结果怎么办?几个 then/catch 的嵌套变得可怕。目标是在呈现页面之前准备好所有数据(在 Express 中)