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、经典查询、行类型、描述和脚本。
- 池、会话和事务:所有权、保存点和准备。
- 配置:连接uri、TLS、身份验证和限制。
- 流和拷贝 和 通知.
- 错误、超时和关机.
- API概述和兼容性,包括迁移说明。
模式生成和查询检入 榫. SQL组合和迁移属于应用程序或更高级的库。