@fetchq/pg-pubsub

中文文档
0.9.0发布于 2024/07/12MITCommonJS近 30 天下载 1.2万

在PostgreSQL NONIFY/LISTEN上发布/订阅执行

中文使用文档
文档目录10 节
  1. 安装
  2. 所需资源
  3. 使用量
  4. 选项
  5. 方法
  6. 实例
  7. 说明
  8. 林特 / 测试
  9. 通过 Make/ Docker 自动化
  10. 手动执行

PG PubSub 软件

出版/订阅 邮政通知/邮件

Linting Build Status Node CI Build Status Coverage Status dependencies Status Known Vulnerabilities js-semistandard-style

安装

npm install pg-pubsub --save

所需资源

节点.js >= 10.x 邮递: 9.4

使用量

const PGPubsub = require('pg-pubsub');
const pubsubInstance = new PGPubsub(uri[, options]);

选项

{
  [log]: Function // default: silent when NODE_ENV=production, otherwise defaults to console.log(...)
}

方法

  • 添加Channel( 频道Name [, 事件倾听器]] – 开始在频道上收听,并可选择为该事件添加一个事件收听器. 作为 PGPubsub 继承从 EventEmitter 一个人自己也加.
  • 删除频道( 频道Name [, 事件倾听器]] – 要么删除所有事件听众并停止在频道上收听,要么删除指定的事件听众并停止在频道上收听,如果这是最后一个附着的听众的话.
  • 发布( 频道Name, 数据) – 发布指定数据JSON- 编码到指定频道. 最好还是把电话送过去 NOTIFY channelName, '{"hello":"world"}' 使用普通 Postgres 池询问您自己,而不是依赖此模块的单个连接。 a 承诺将被拒绝或解决,取决于Postgres呼叫是否成功.
  • 关闭 (): 承诺 – 关闭数据库连接并删除所有听众. 对优雅的关闭很有用.
  • 全体 事件编辑器方法 从 EventEmitter

实例

简单

const pubsubInstance = new PGPubsub('postgres://username@localhost/database');

pubsubInstance.addChannel('channelName', function (channelPayload) {
  // Process the payload – if it was JSON that JSON has been parsed into an object for you
});

pubsubInstance.publish('channelName', { hello: "world" });

以上发送 NOTIFY channelName, '{"hello":"world"}' 到 PostgreSQL, 这将触发上面的听众, 并使用解析过的 JSON channelPayload。 。 。 .

高级

const pubsubInstance = new PGPubsub('postgres://username@localhost/database');

pubsubInstance.addChannel('channelName');

// pubsubInstance is a full EventEmitter object that sends events on channel names
pubsubInstance.once('channelName', function (channelPayload) {
  // Process the payload
});

说明

创建一个 PGPubsub 实例不会在前面做很多事情。 它会准备在第一个信道被添加后启动Postgres连接,然后它会保持一个连接打开直到关闭,如果它丢失就重新连接,这样它就可以不断收听新的通知.

林特 / 测试

通过 Make/ Docker 自动化

进行测试的最简单方法是通过 Makefile linux 兼容环境 :

make test

手动执行

如果您想要手动操作测试, 您首先需要访问 PostgreSQL 实例 。 你可以有两种方式:

维娅·多克

docker run --rm -it -p 5432:5432 -e \
POSTGRES_DB=pgpubsub_test -e \
POSTGRES_PASSWORD=postgres postgres

Via 环境文件

您可以创建 环境文件 内 test/.env数字 :

DATABASE_TEST_URL=postgres://postgres:postgres@localhost:5432/postgres

DATABASE_TEST_URL_INVALID_USER=postgres://invalidUser:postgres@localhost:5432/postgres

DATABASE_TEST_URL_INVALID_PASSWORD=postgres://postgres:invalidPassword@localhost:5432/postgres

PostgreSQL 设置完成后,您可以用您的节点环境运行测试 :

npm i
npm test

版本与发布记录

@fetchq/pg-pubsub 共发布 7 个版本,首次发布于 2020/08/06;过去 12 个月发布了 0 个版本。

版本发布日期距今
0.9.0latest2024/07/122 年前
0.8.02021/06/035 年前
0.7.32021/02/225 年前
0.7.22021/02/225 年前
0.6.12020/09/276 年前
0.6.02020/08/066 年前

关于 @fetchq/pg-pubsub 的常见问题

@fetchq/pg-pubsub 是什么?

在PostgreSQL NONIFY/LISTEN上发布/订阅执行

如何安装 @fetchq/pg-pubsub?

在项目目录运行 npm install @fetchq/pg-pubsub,或使用 pnpm add / yarn add / bun add。

@fetchq/pg-pubsub 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/fetchq__pg-pubsub 是否存在。

@fetchq/pg-pubsub 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@fetchq/pg-pubsub 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=10.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@fetchq/pg-pubsub 可以商用吗?

@fetchq/pg-pubsub 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@fetchq/pg-pubsub 的下载量有多少?

根据 npm 官方下载统计,@fetchq/pg-pubsub 在 2026/10/15 – 2026/11/13 这 30 天内被下载 12,150 次,日均约 405 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@fetchq/pg-pubsub 还在维护吗?

最新版本 0.9.0 发布于 2024/07/12(2 年前);至今共发布 7 个版本,其中过去 12 个月发布了 0 个;首次发布于 2020/08/06。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。