# @absolutejs/errors-postgres 中文文档

规范地址：https://npmcn.com/package/%40absolutejs/errors-postgres/

版本：0\.2\.0
npm 元数据更新时间：2026-10-22T08:32:44.605Z
中文译文更新时间：2026-11-06T20:13:17.464Z
软件包许可：Apache-2\.0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40absolutejs/errors-postgres
原文对照：https://npmcn.com/package/%40absolutejs/errors-postgres/?lang=original
项目主页：https://github.com/absolutejs/errors-adapters/tree/main/postgres
源码仓库：https://github.com/absolutejs/errors-adapters

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：641 kB，15 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：2 个
- peer 依赖：effect \>=3\.22\.0 \<4，drizzle-orm \>=1\.0\.0-rc\.4 \<2，@absolutejs/errors \>=0\.9\.0 \<0\.11\.0
- 首次发布：2026-06-24T19:01:50.346Z
- 最新版本发布：2026-10-22T08:32:43.670Z
- 近 30 天下载量：2394（2026-10-05 至 2026-11-03，npm 官方下载统计）
- 已发布版本数：13（近 12 个月 13 个）

## 中文简介

后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后.

## 安装

```sh
npm install @absolutejs/errors-postgres
```

也可以使用：`pnpm add @absolutejs/errors-postgres`、`yarn add @absolutejs/errors-postgres`、`bun add @absolutejs/errors-postgres`

## README

# @absourutejs/errors-postgres (英语)

后发后发后发, **效应本土** `IssueStore` 页:1 [`@absolutejs/errors`](https://www.npmjs.com/package/@absolutejs/errors) —— 说 耐用"问题"表面(哨兵的产品核心),自发寄托在您身上 拥有Postgres.

长期分类 **问题** + 仅一个附件 **事件时间表**,与 **新的回归** 探测在单一原子CTE上升中得到解析—— 一个往返,没有交易, 所以它工作过尼昂的HTTP驱动器.

## 安装

```sh
bun add @absolutejs/errors-postgres
# plus your driver + peers:
bun add @absolutejs/errors effect postgres   # or @neondatabase/serverless
```

`postgres` 财务报告和审定财务报表 `@neondatabase/serverless` 为: **选项** 同伴——安装 随便你用哪个司机.

## 使用量

### 滴水龙头

从您的应用程序中再导出软件包表格, 用 您的正常迁移工作流程 :

```ts
export { errorEvents, errorIssues } from "@absolutejs/errors-postgres";
```

```ts
import { createDrizzleIssueStore } from "@absolutejs/errors-postgres";

const store = createDrizzleIssueStore({ db });
```

Drizzle 商店使用交易进行原子事件/组更新, 便携式 本地 JSONB 用于标记和额外的上下文,行锁定用于回归检测, 和与被标记的模板适配器相同的效果出错通道. JSONB 值作为本地对象传递给 Drizzle 驱动程序(而不是 预序列化字符串,防止被 Bun SQL 存储为 JSON 字符串.

### 标记模板相容性

```ts
import postgres from "postgres";
import { createErrorTracker } from "@absolutejs/errors";
import { createPostgresIssueStore } from "@absolutejs/errors-postgres";

const sql = postgres(process.env.DATABASE_URL!);

const errors = createErrorTracker({
  project: "acme",
  release: process.env.RELEASE,
  store: createPostgresIssueStore({ sql }), // schema auto-created, lazy
  onIssue: (r) => alert(r.issue), // only on new / regression
});

await errors.captureException(err, { traceId, replayId });
```

作品与 `@neondatabase/serverless`数字 :

```ts
import { neon } from "@neondatabase/serverless";
const sql = neon(process.env.DATABASE_URL!);
createPostgresIssueStore({ sql });
```

## 执行什么

每个方法返回一个 `Effect` 输入 `IssueStoreError` 频道 (单位:千美元)`IssueStoreSchemaError` 编号 : `IssueStoreQueryError` 编号 : `IssueStoreSerializationError`)——失败是价值,而不是抛出.

| 方法 | 效果 |
| --- | --- |
| `record(event)` | 原子升高(一个事件) □ `{ issue, isNew, isRegression }` |
| `recordCoalesced(group)` | 计数上升+大宗 `unnest` 插入——每群一次往返旅行 |
| `listIssues(filter?)` | 仪表板列表(项目/环境/状态/ILIKE标题),最新首发 |
| `getIssue(project, fingerprint)` | `Option<IssueRecord>` |
| `setState(project, fingerprint, state)` | 解析/ 忽略/ 未解析 |
| `assign(project, fingerprint, who | null)` | 分数 |
| `listEvents(project, fingerprint, limit?)` | 发生时间,最新第一次 |

### 组合语义( 镜像) `createMemoryIssueStore` 确切的说)

-   **新的回归** 在一个语句中检测到: `xmax = 0` ⇒行 插入( 新); CTE 抓取更新前的日期 `state`,所以一个 `resolved` 再次看到的问题是一个 **回归** 转回 `unresolved`。 。 。 . `ignored` 问题保持沉默.
-   **严重性不断升级,从未降级** —— 说 `fatal > error > warning > info`。 。 。 .
-   **第一次/最后一次释放** 追踪到的`first_release` )). 后补.
-   **`lastSeen` 用途 `GREATEST`** ——出事事件永不倒计时.

## 斯克马 (懒惰,同能)

在第一次使用时创建( 设置) `ensureSchema: false` 通过移民管理. `tablePrefix` 默认为 `error` → `error_issues` + 键 `error_events`。 。 。 .

```
error_issues  PK (project, fingerprint)   -- one row per grouped issue
error_events  bigserial id                -- append-only occurrences (jsonb tags/extra)
```

索引 : `(project, last_seen DESC)` 财务报告和审定财务报表 `(project, state)` 关于问题; `(project, fingerprint, at DESC)` 活动.

`trace_id` 编号 : `span_id` (-) `@absolutejs/telemetry`和 `replay_id` (-) `@absolutejs/replay`) 存储每个事件,这样一个仪表板可以交叉链接 一个问题 准确的追踪 和DOM重放.

`error_issues` 还载有决议线索—— `resolved_at`, (中文(简体) ), `resolved_by`, (中文(简体) ), `resolved_release`, (中文(简体) ), `resolution_note` ——分块板 当一个问题结束的时候写. `ensureSchema` 将它们添加到现有的表格中; 通过迁移拥有其计划的申请必须自己加入 在升级之前,因为商店会写它知道的每一个专栏.

选择来自 Drizzle 的系统存储, 用于应用程序管理的数据库或 用于轻量级和尼昂HTTP的原始标记-模板相容性商店 一体化.

## 曲线

商店回答"什么破了,多久破了". 上面的一块板子必须 回答一个人在它面前实际问到的问题: 什么是现在打破,谁是 在它上,完成了固定, 释放引入了这一点. `createIssueTriage` 是那些询问, 绑在一个项目上 .

```ts
import { createIssueTriage } from "@absolutejs/errors-postgres";

const triage = createIssueTriage({ db, project: "acme" });

await triage.list({ severity: "error", state: "unresolved" });
await triage.get(fingerprint); // issue + recent events
await triage.occurrences(fingerprint, 14); // zero-filled daily sparkline
await triage.stateCounts(); // numbers for the filter chips
await triage.setState(fingerprint, "resolved", { by, note, release });
await triage.assign(fingerprint, "alex");
await triage.releaseStats(["sha1", "sha2"]);
```

A 类 **回归** 被导出, 不存储 : 摄入上浮翻转解 发回 `unresolved` 当它复发而离去的时候 `resolved_at` 已经到位,所以 未解决 + 解析印章 + 活动 后表示修补没有被持有 . `setState` 清除重开的线索, 因为手动重开是决定 而不是一个失败的修复, 和幸存的邮票会成为下一个 重现看起来像一个.

`releaseStats` 需要的部署分类账: 发布,其中提出了多少问题,从它之前, 或被宣布为固定在其中 3个警告的部署与1个不同 引入了三个错误。 每放出一桶,每桶一桶.

## 许可证

阿帕奇2.0 (英语).

## 常见问题

### @absolutejs/errors-postgres 是什么？

后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后加后\.

### 如何安装 @absolutejs/errors-postgres？

在项目目录运行 npm install @absolutejs/errors-postgres，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：effect（\>=3\.22\.0 \<4）、drizzle-orm（\>=1\.0\.0-rc\.4 \<2）、@absolutejs/errors（\>=0\.9\.0 \<0\.11\.0）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @absolutejs/errors-postgres 支持 TypeScript 吗？

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

### @absolutejs/errors-postgres 支持 ESM 还是 CommonJS？

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

### @absolutejs/errors-postgres 可以商用吗？

@absolutejs/errors-postgres 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @absolutejs/errors-postgres 的下载量有多少？

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

### @absolutejs/errors-postgres 还在维护吗？

最新版本 0\.2\.0 发布于 2026/10/22（16 天前）；至今共发布 13 个版本，其中过去 12 个月发布了 13 个；首次发布于 2026/06/25。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

