# @bemi-db/prisma 中文文档

规范地址：https://npmcn.com/package/%40bemi-db/prisma/

版本：1\.1\.0
npm 元数据更新时间：2025-05-26T21:15:10.470Z
中文译文更新时间：2026-11-07T22:56:21.280Z
软件包许可：LGPL-3\.0

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

原始 npm 页面：https://www.npmjs.com/package/%40bemi-db/prisma
原文对照：https://npmcn.com/package/%40bemi-db/prisma/?lang=original
项目主页：https://github.com/BemiHQ/bemi-prisma#readme
源码仓库：https://github.com/BemiHQ/bemi-prisma

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

- 包体积（解压后）：191 kB，15 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- 运行依赖：5 个
- peer 依赖：@prisma/client ^6\.7\.0
- 首次发布：2023-12-15T17:01:09.415Z
- 最新版本发布：2025-05-26T21:15:10.272Z
- 近 30 天下载量：2132（2026-10-08 至 2026-11-06，npm 官方下载统计）
- 已发布版本数：34（近 12 个月 0 个）

## 中文简介

Prisma 自动数据更改跟踪

## 安装

```sh
npm install @bemi-db/prisma
```

也可以使用：`pnpm add @bemi-db/prisma`、`yarn add @bemi-db/prisma`、`bun add @bemi-db/prisma`

## README

[![bemi-banner](https://docs.bemi.io/img/bemi-banner.png)](https://bemi.io/)

[网站](https://bemi.io/) • 妇女 [文档](https://docs.bemi.io/) • 妇女 [示例](https://github.com/BemiHQ/bemi-prisma-example) • 妇女 [报告错误](https://github.com/BemiHQ/bemi-prisma/issues/new) • 妇女 [请求特性](https://github.com/BemiHQ/bemi-prisma/issues/new) • 妇女 [解析器](https://discord.gg/mXeZ6w2tGf) • 妇女 [微博](https://twitter.com/BemiHQ) • 妇女 [链接](https://www.linkedin.com/company/bemihq/about)

# 贝米·普里斯马

[贝米](https://bemi.io/) 插件进入 [普里斯马](https://github.com/prisma/prisma) 和用于自动跟踪数据变化的现有 PostgreSQL 数据库。 它解锁了强烈的上下文感审计线索 和时间旅行查询 在你的应用程序.

贝米的设计简单且不侵扰 不需要修改你现有的数据库结构 它在背景中运行,赋予你数据变化跟踪功能.

此库是一个可选的 Prisma 集成, 允许您在进行数据库更改时通过特定应用程序的上下文 。 这可以包括上下文,如"在哪里"(API端点,工人等),"谁"(用户,克龙工作等),以及"变化背后的",从而丰富了被贝米所捕获的信息.

## 目录

-   [要点](https://npmcn.com/package/%40bemi-db/prisma/#readme-highlights)
-   [使用大小写](https://npmcn.com/package/%40bemi-db/prisma/#readme-use-cases)
-   [快速启动](https://npmcn.com/package/%40bemi-db/prisma/#readme-quickstart)
-   [结构概览](https://npmcn.com/package/%40bemi-db/prisma/#readme-architecture-overview)
-   [许可证](https://npmcn.com/package/%40bemi-db/prisma/#readme-license)

## 要点

-   以结构化形式自动和安全地跟踪特定应用程序上下文的数据库更改
-   获取数据变化的100%可靠性, 即使通过应用程序外的直接 SQL 执行
-   高性能,不影响代码运行时间执行和数据库工作量
-   易于使用而不改变表格结构和重写代码
-   时间旅行查询和方便分组和过滤变化的能力
-   自动提供云基础设施的可扩展性
-   完全拥有您的数据

见 [实例还原](https://github.com/BemiHQ/bemi-prisma-example) 用于自动跟踪所有变化的 Prisma.

## 使用大小写

贝米建设的用途案例范围很广!. 该技术最初是作为Fintech的合规工程系统而建造的,支持了管理下价值15B美元的资产,但后来被取入了通用用途. 一些使用案例包括:

-   **审计路线:** 使用日志进行合规,或向客户支持和外部客户展示.
-   **更改还原 :** 恢复用户所做的更改或回滚API请求中的所有数据更改.
-   **时间旅行:** 检索历史数据而不执行事件来源.
-   **解决问题:** 查明申请问题的根源.
-   **分布式追踪 :** 跨分布式系统的跟踪变化.
-   **测试 :** 回滚或回滚到不同的应用测试状态.
-   **分析趋势:** 深入了解历史趋势和变化,以便作出知情决策.

## 快速启动

安装国家预防机制软件包

```sh
npm install @bemi-db/prisma
```

启用本地 [节点.js PostgreSQL 适配器](https://github.com/brianc/node-postgres) 您的 Prisma 客户端的包装 `withPgAdapter`

```ts
import { PrismaPg, withBemiExtension } from "@bemi-db/prisma";
import { PrismaClient } from '@prisma/client';

const adapter = PrismaPg({ connectionString: process.env.DATABASE_URL });
const prisma = withBemiExtension(new PrismaClient({ adapter }));
```

添加一个 [快递](https://expressjs.com/) 通过自动跟踪数据库更改的应用程序上下文的中间软件

```ts
import { bemiMiddleware } from "@bemi-db/prisma";
import express, { Request } from "express";

const app = express();

app.use(
  bemiMiddleware((req: Request) => ({
    // Customizable context
    userId: req.user?.id,
    endpoint: req.url,
    params: req.body,
  }))
);
```

更改数据库,确保它们都保存在名为“表格”的表格中 `changes` 在目的地 DB 中

```
psql -h [HOSTNAME] -U [USERNAME] -d [DATABASE] -c 'SELECT "primary_key", "table", "operation", "before", "after", "context", "committed_at" FROM changes;'

 primary_key | table | operation |                       before                      |                       after                        |                        context                                                                                        |      committed_at
-------------+-------+-----------+---------------------------------------------------+----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+------------------------
 26          | todo  | CREATE    | {}                                                | {"id": 26, "task": "Sleep", "isCompleted": false}  | {"userId": 187234, "endpoint": "/todo", "params": {"task": "Sleep", "isCompleted": false}, "SQL": "INSERT INTO ..."}  | 2023-12-11 17:09:09+00
 27          | todo  | CREATE    | {}                                                | {"id": 27, "task": "Eat", "isCompleted": false}    | {"userId": 187234, "endpoint": "/todo", "params": {"task": "Eat", "isCompleted": false}, "SQL": "INSERT INTO ..."}    | 2023-12-11 17:09:11+00
 28          | todo  | CREATE    | {}                                                | {"id": 28, "task": "Repeat", "isCompleted": false} | {"userId": 187234, "endpoint": "/todo", "params": {"task": "Repeat", "isCompleted": false}, "SQL": "INSERT INTO ..."} | 2023-12-11 17:09:13+00
 26          | todo  | UPDATE    | {"id": 26, "task": "Sleep", "isCompleted": false} | {"id": 26, "task": "Sleep", "isCompleted": true}   | {"userId": 187234, "endpoint": "/todo/complete", "params": {"id": 26}, "SQL": "UPDATE ..."}                           | 2023-12-11 17:09:15+00
 27          | todo  | DELETE    | {"id": 27, "task": "Eat", "isCompleted": false}   | {}                                                 | {"userId": 187234, "endpoint": "/todo/27", "params": {"id": 27}, "SQL": "DELETE FROM ..."}                            | 2023-12-11 17:09:18+00
```

看看我们 [Prisma 文档](https://docs.bemi.io/orms/prisma) 更多细节.

## 结构概览

贝米被设计为轻量级和安全型. 它采取切实可行的办法,实现以下利益: [事件源代码](https://blog.bemi.io/rethinking-event-sourcing/) 不需要重排现有代码, 切换到高度专门化的数据库, 或者在数据库之上使用不必要的像git的抽象。 我们希望你的系统能像它已经做的一样 与你现有的数据库保持尽可能简单.

Bemi将数据库和应用层都插入,确保100%的可靠性和对每个变化的全面理解.

在数据库级别上,贝米安全地连接到 PostgreSQL [写入前端日志](https://www.postgresql.org/docs/current/wal-intro.html) 执行 [更改数据抓取](https://blog.bemi.io/cdc/)。这可以跟踪甚至通过直接 SQL 触发的变化.

在应用程序级别上,此软件包通过使用一个 [Prisma 扩展名](https://www.prisma.io/docs/orm/prisma-client/client-extensions) 到复制日志,以加强低级数据库更改。 例如,一个用户进行更改的信息,启动更改的API端点,自动触发数据库更改的工人名等.

Bemi工人然后将低级数据与应用程序上下文相接,并以结构化的易于查询的格式储存这些信息,如下文所描述:

![bemi-architechture](https://docs.bemi.io/img/architecture.png)

云溶液包括工人活虫,为过错耐受性而排队,以及一个没有服务器的PostgreSQL. 如果你想自己运行一个自办的版本,请看我们 [自动托管文件](https://docs.bemi.io/self-hosting)。 。 。 .

## 许可证

根据《议定书》的规定分发 [LGPL-3.0 许可证](https://npmcn.com/package/%40bemi-db/prisma/LICENSE)。 。 。 . 如果需要修改并分发代码,请放出以回馈开源社区.

## 常见问题

### @bemi-db/prisma 是什么？

Prisma 自动数据更改跟踪

### 如何安装 @bemi-db/prisma？

在项目目录运行 npm install @bemi-db/prisma，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：@prisma/client（^6\.7\.0）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。它还提供命令行工具 bemi，可以用 npx bemi 直接运行。

### @bemi-db/prisma 支持 TypeScript 吗？

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

### @bemi-db/prisma 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### @bemi-db/prisma 可以商用吗？

@bemi-db/prisma 使用 LGPL-3\.0 许可。弱 Copyleft：作为库被调用时通常不要求开源你自己的代码，但修改库本身需以 LGPL 开源；前端打包合并后的适用边界存在不同理解。以上为概括，不构成法律意见，请以许可原文为准。

### @bemi-db/prisma 的下载量有多少？

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

### @bemi-db/prisma 还在维护吗？

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

