javascript - 在将少量记录插入 Postgres 数据库后,Nodejs 应用程序使用 knex 中断

标签 javascript node.js rxjs observable knex.js

在将几条记录插入 Postgres 数据库后,我的 Nodejs 应用程序使用 knex 中断并出现以下错误:

未处理的拒绝错误

aborted at PendingOperation.abort (/mnt/c/Users/*********/node_modules/tarn/lib/PendingOperation.js:25:17)
at Promise.all.pendingAcquires.map.acquire (/mnt/c/Users/*********/node_modules/tarn/lib/Pool.js:190:23)
at Array.map (native)
at Promise.all.then.then (/mnt/c/Users/*********/node_modules/tarn/lib/Pool.js:189:34)

来自上一个事件:
at Client_PG.acquireConnection (/mnt/c/Users/*********/node_modules/knex/lib/client.js:335:34)
at /mnt/c/Users/*********/node_modules/knex/lib/transaction.js:191:41

来自上一个事件:
at Transaction.acquireConnection (/mnt/c/Users/*********/node_modules/knex/lib/transaction.js:190:34)
at new Transaction (/mnt/c/Users/*********/node_modules/knex/lib/transaction.js:68:53)
at Client_PG.transaction (/mnt/c/Users/*********/node_modules/knex/lib/client.js:159:12)
at Function.transaction (/mnt/c/Users/*********/node_modules/knex/lib/util/make-knex.js:75:21)

这是它中断的代码:
const writeOrdersToDB$ = (order: Order): Observable<Order> => {
  const orderToInsert = cleanOrder(order);
  return Observable.fromPromise(knex.transaction((trx: Transaction) => trx('order')
    .insert(orderToInsert)
    .returning('*')));
};

最佳答案

试试这个,它解决了我的问题:
这有效:

finally(x => knex.destroy());
这不起作用:
finally(knex.destroy());

关于javascript - 在将少量记录插入 Postgres 数据库后,Nodejs 应用程序使用 knex 中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50783561/

相关文章:

node.js - 在 node.js 中使用 express undefined variable 不会引发错误

typescript - 如何从字符串输入中使用 RxJs 5 的主题和去抖动

javascript - 有条件地组合两个可观察量

javascript - Node.js 事件发射器是否必须绑定(bind)到自定义对象才能有效使用它们?

javascript - 无法在 PrestaShop 1.6 的脚本标签中添加数据属性

javascript - 第三方REST API基础认证

javascript - RXJS 对另一个可观察值进行过滤

javascript - 平移和缩放后鼠标单击转换为 svg

javascript - 如何使用 Elastic Beanstalk 创建 "tmp"目录?

node.js - 使用 vue cli webpack 后如何部署 Vue 应用