@kequtech/pgclear

中文文档
0.3.4发布于 2026/11/01ISCTypeScriptES Module零依赖

一个带有显式会话所有权的独立TypeScript PostgreSQL驱动程序

中文使用文档
文档目录4 节
  1. 安装并运行查询
  2. 把相关工作放在一个联系人上
  3. 了解你的价值观
  4. 文档

pgclear

一个在Node.js 24+上支持JavaScript和TypeScript的PostgreSQL驱动程序。只支持ESM,使用TypeScript 声明,没有运行时依赖项。测试与PostgreSQL 16和18。

pgclear将SQL发送给PostgreSQL,分别绑定值,并对结果进行解码。它提供了 连接池、事务、预处理语句、行流、COPY和通知。每一个 Connection每次运行一个操作;池允许独立操作使用单独的连接。

安装并运行查询

npm install @kequtech/pgclear

集 DATABASE_URL 到你的PostgreSQL连接URI。另存为 example.mjs 然后运行它 node example.mjs:

import { createPool, sql } from '@kequtech/pgclear';

const connectionString = process.env.DATABASE_URL;
if (!connectionString) throw new Error('Set DATABASE_URL before running this example.');

const pool = createPool(connectionString);
try {
  const message = 'Hello, PostgreSQL!';
  const result = await pool.query(sql`SELECT ${message} AS message`);
  console.log(result.rows[0]?.message); // Hello, PostgreSQL!
} finally {
  await pool.close();
}

这个 sql 标签转 ${message} 成一个 $1 占位符和单独的绑定值。事实并非如此 将值插入到SQL文本中。对于带有编号占位符的现有SQL,使用 queryClassic(text, values):

const result = await pool.queryClassic<{ message: string }>('SELECT $1 AS message', [
  'Hello, PostgreSQL!',
]);

两个方法都返回 rows, fields, command, commandTag, rowCount. 打印稿行 注释描述你所期望的;pgclear不会根据SQL验证它们。

池根据需要打开连接。在应用程序中,创建一个池,重用它,然后关闭它 在关闭。应用程序必须读取环境变量并将其传递给pgclear;司机 不加载 DATABASE_URL 或者 .env 自动。

单独的池查询可以使用不同的连接。事务回调持有一个连接, 回调成功时提交,抛出时回滚:

await pool.transaction(async (tx) => {
  await tx.queryClassic('UPDATE accounts SET balance = balance - $1 WHERE id = $2', [10, 1]);
  await tx.queryClassic('UPDATE accounts SET balance = balance + $1 WHERE id = $2', [10, 2]);
});

这个例子假设 accounts 表格。使用提供的 tx 处理中所有的工作 事务。使用 pool.withSession 当您需要一个连接而不启动事务时。 准备好的语句、流和COPY也在一个已举行的会话中运行。

了解你的价值观

  • int8/bigserial 和 numeric/decimal 结果是字符串,以保持精度。包括 count(*). 命令元数据,例如 rowCount 是一个 number | null.
  • 默认情况下,日期和时间是字符串。 Date、bigint和支持的时态值 直接绑定;将它们读取为Date、bigint或Temporal需要显式的编解码器选择。
  • 使用 json(value) 的JSON参数和 param(array, codec) 用于PostgreSQL数组。平原 对象、数组和 undefined 作为绑定被拒绝。
  • 查询值为参数。不能使用表名、列名、SQL片段和列表 插入与 sql 篡改。

看到 值和编解码器 示例和完整的输出映射。

文档

先从 文档索引 或者选择一个指南:

模式生成和查询检入 榫. SQL组合和迁移属于应用程序或更高级的库。

参与者: 开发和测试, 体系结构, 基准, 发布说明.

版本与发布记录

@kequtech/pgclear 共发布 9 个版本,首次发布于 2026/10/29;过去 12 个月发布了 9 个版本。

版本发布日期距今
0.3.4latest2026/11/011 天前
0.3.32026/10/313 天前
0.3.22026/10/304 天前
0.3.12026/10/304 天前
0.3.02026/10/304 天前
0.2.02026/10/294 天前

关于 @kequtech/pgclear 的常见问题

@kequtech/pgclear 是什么?

一个带有显式会话所有权的独立TypeScript PostgreSQL驱动程序

如何安装 @kequtech/pgclear?

在项目目录运行 npm install @kequtech/pgclear,或使用 pnpm add / yarn add / bun add。

@kequtech/pgclear 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@kequtech/pgclear 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@kequtech/pgclear 需要什么版本的 Node.js?

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

@kequtech/pgclear 可以商用吗?

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

@kequtech/pgclear 还在维护吗?

最新版本 0.3.4 发布于 2026/11/01(1 天前);至今共发布 9 个版本,其中过去 12 个月发布了 9 个;首次发布于 2026/10/29。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。