# @decaf-ts/db-decorators 中文文档

规范地址：https://npmcn.com/package/%40decaf-ts/db-decorators/

版本：0\.20\.0
npm 元数据更新时间：2026-11-06T20:11:26.635Z
中文译文更新时间：2026-11-12T12:57:55.719Z
软件包许可：MPL-2\.0

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

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

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

- 包体积（解压后）：902 kB，248 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- Node.js 要求：\>=20\.0\.0
- 运行依赖：4 个
- 首次发布：2024-09-30T19:04:28.437Z
- 最新版本发布：2026-11-06T20:11:26.293Z
- 近 30 天下载量：2441（2026-10-12 至 2026-11-10，npm 官方下载统计）
- 已发布版本数：137（近 12 个月 71 个）

## 中文简介

不可知数据库装饰器和存储器

## 安装

```sh
npm install @decaf-ts/db-decorators
```

也可以使用：`pnpm add @decaf-ts/db-decorators`、`yarn add @decaf-ts/db-decorators`、`bun add @decaf-ts/db-decorators`

## README

![Banner](https://npmcn.com/package/%40decaf-ts/db-decorators/workdocs/assets/decaf-logo.svg)

### DB 设计器: 数据库操作简单

Db-装饰器库为数据库操作提供全面的TypeScript装饰器和公用设备. 它执行寄存器模式,支持模型定义,验证,身份管理和操作钩. 该库使开发者能够用装饰器定义数据库模型,通过验证执行CRUD操作,并通过操作钩自定义数据库操作期间的行为.

> 2025-11-26. 发布docs刷新. 见 [工作文件/报告/报告](https://npmcn.com/package/%40decaf-ts/db-decorators/workdocs/reports/RELEASE_NOTES.md) 罚单摘要.

### 核心概念

-   **`Repository`**: 执行寄存器模式的抽象基础类,为CRUD操作提供一致的接口.
-   **钩子行动**编号: `Repository` 类提供 `Prefix` 财务报告和审定财务报表 `Suffix` 方法,允许您在主操作前后执行自定义逻辑.
-   **装饰器操作**: 装饰者喜欢 `@onCreate`, (中文(简体) ), `@onUpdate`, (中文(简体) ), `@onDelete`,以及 `@onRead` 允许您将自定义逻辑附加到特定的仓库操作中.
-   **`Context`**: 用于通过应用程序的不同层传递背景信息的类.
-   **与数据库有关的装饰**: 一套处理共同数据库任务的装饰器,例如定义主密钥(`@id`),生成值(`@generated`),散列值(`@hash`),组成来自其他属性的值(`@composed`),并管理版本编号(`@version`) (中文(简体) ).

![Licence](https://img.shields.io/github/license/decaf-ts/db-decorators.svg?style=plastic) ![GitHub language count](https://img.shields.io/github/languages/count/decaf-ts/db-decorators?style=plastic) ![GitHub top language](https://img.shields.io/github/languages/top/decaf-ts/db-decorators?style=plastic)

[![Build & Test](https://github.com/decaf-ts/db-decorators/actions/workflows/nodejs-build-prod.yaml/badge.svg)](https://github.com/decaf-ts/db-decorators/actions/workflows/nodejs-build-prod.yaml) [![CodeQL](https://github.com/decaf-ts/db-decorators/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/decaf-ts/db-decorators/actions/workflows/codeql-analysis.yml)[![Snyk Analysis](https://github.com/decaf-ts/db-decorators/actions/workflows/snyk-analysis.yaml/badge.svg)](https://github.com/decaf-ts/db-decorators/actions/workflows/snyk-analysis.yaml) [![Pages builder](https://github.com/decaf-ts/db-decorators/actions/workflows/pages.yaml/badge.svg)](https://github.com/decaf-ts/db-decorators/actions/workflows/pages.yaml) [![.github/workflows/release-on-tag.yaml](https://github.com/decaf-ts/db-decorators/actions/workflows/release-on-tag.yaml/badge.svg?event=release)](https://github.com/decaf-ts/db-decorators/actions/workflows/release-on-tag.yaml)

![Open Issues](https://img.shields.io/github/issues/decaf-ts/db-decorators.svg) ![Closed Issues](https://img.shields.io/github/issues-closed/decaf-ts/db-decorators.svg) ![Pull Requests](https://img.shields.io/github/issues-pr-closed/decaf-ts/db-decorators.svg) ![Maintained](https://img.shields.io/badge/Maintained%3F-yes-green.svg)

![Forks](https://img.shields.io/github/forks/decaf-ts/db-decorators.svg) ![Stars](https://img.shields.io/github/stars/decaf-ts/db-decorators.svg) ![Watchers](https://img.shields.io/github/watchers/decaf-ts/db-decorators.svg)

![Node Version](https://img.shields.io/badge/dynamic/json.svg?url=https%3A%2F%2Fraw.githubusercontent.com%2Fbadges%2Fshields%2Fmaster%2Fpackage.json&label=Node&query=$.engines.node&colorB=blue) ![NPM Version](https://img.shields.io/badge/dynamic/json.svg?url=https%3A%2F%2Fraw.githubusercontent.com%2Fbadges%2Fshields%2Fmaster%2Fpackage.json&label=NPM&query=$.engines.npm&colorB=purple)

现有文件 [这里](https://decaf-ts.github.io/db-decorators/)

最小大小: 9 KB kb gziped

### DB 设计器

Db-decorators库是数据库操作的强大TypeScript框架,它利用了装饰器来简化数据库交互. 它为执行寄存器模式提供了一个全面的解决方案,对模型定义、验证、身份管理和操作钩提供了内在支持.

#### 关键特性

1.  **仓库模式的执行**

-   摘要 `BaseRepository` 分类为 CRUD 操作提供基础
-   混凝土 `Repository` 有验证支持的类
-   支助散装作业 `BulkCrudOperator` 接口

2.  **模型管理**

-   带有类型脚本装饰器的模型定义
-   身份管理 `@id()` 装饰
-   财产构成 `@composed()` 财务报告和审定财务报表 `@composedFromKeys()` 装饰器
-   使用 `@version()` 装饰
-   带有 `@transient()` 装饰

3.  **钩子行动**

-   操作前钩 `@on()`, (中文(简体) ), `@onCreate()`, (中文(简体) ), `@onUpdate()`等 (中文(简体) ).
-   操作后钩 `@after()`, (中文(简体) ), `@afterCreate()`, (中文(简体) ), `@afterUpdate()`等 (中文(简体) ).
-   自定义操作处理器通过 `Operations` 登记

4.  **内容管理**

-   父子关系的等级上下文链
-   国家管理的背景积累
-   具体行动背景的创建

5.  **验证**

-   与装饰- 验证库合并
-   CRUD 操作中自动验证
-   通过装饰器自定义验证规则

该库的设计旨在可被扩展并适应不同的数据库后端,提供一致的API,而不论基本的存储机制如何.

# 如何使用

本指南举例说明如何利用《公约》的主要特点 `@decaf-ts/db-decorators` 图书馆.

## 仓库

这个 `Repository` 类是执行寄存器模式的抽象基础类.

### 创建仓库

要创建存储器, 您需要扩展 `Repository` 分类并执行抽象的 CRUD 方法.

```typescript
import { Repository, Model } from '@decaf-ts/db-decorators';
import { model, id, required } from '@decaf-ts/decorator-validation';

@model()
class User extends Model {
  @id()
  id: string;

  @required()
  name: string;
}

class UserRepository extends Repository<User, any> {
  constructor() {
    super(User);
  }

  async create(model: User): Promise<User> {
    // Implementation for creating a user
    return model;
  }

  async read(key: string): Promise<User> {
    // Implementation for reading a user
    return new User({ id: key, name: 'User' });
  }

  async update(model: User): Promise<User> {
    // Implementation for updating a user
    return model;
  }

  async delete(key: string): Promise<User> {
    // Implementation for deleting a user
    const model = await this.read(key);
    return model;
  }
}
```

### 钩子行动

这个 `Repository` 类提供 `Prefix` 财务报告和审定财务报表 `Suffix` 方法,允许您在主操作前后执行自定义逻辑.

```typescript
class UserRepository extends Repository<User, any> {
  // ...

  protected async createPrefix(model: User, ...args: any[]): Promise<[User, ...any[], any]> {
    console.log('Before creating user...');
    return [model, ...args];
  }

  protected async createSuffix(model: User, context: any): Promise<User> {
    console.log('After creating user...');
    return model;
  }
}
```

## 装饰器操作

装饰者喜欢 `@onCreate`, (中文(简体) ), `@onUpdate`, (中文(简体) ), `@onDelete`,以及 `@onRead` 允许您将自定义逻辑附加到特定的仓库操作中.

```typescript
import { onCreate, onUpdate } from '@decaf-ts/db-decorators';

const logOnCreate = onCreate((context, data, key, model) => {
  console.log(`Creating model: ${model.constructor.name}`);
});

@model()
@logOnCreate
class Product extends Model {
  // ...
}
```

## A. 背景情况

这个 `Context` 类用于通过应用程序的不同层传递背景信息.

```typescript
import { Context } from '@decaf-ts/db-decorators';

const context = new Context();
context.set('user', 'admin');

// You can then pass the context to repository methods
// userRepository.create(user, context);
```

## 其他装饰

### `@id`

将属性标为主密钥 .

```typescript
@model()
class Product extends Model {
  @id()
  productId: string;
}
```

### `@generated`

表示一个属性的价值由数据库生成.

```typescript
@model()
class Order extends Model {
  @id()
  @generated()
  orderId: number;
}
```

### `@hash`

自动挥霍属性的值 .

```typescript
@model()
class User extends Model {
  @hash()
  password!: string;
}
```

### `@composed`

由其他属性构成一个属性的价值.

```typescript
@model()
class Person extends Model {
  @composed(['firstName', 'lastName'], ' ')
  fullName: string;

  firstName: string;
  lastName: string;
}
```

### `@version`

自动管理用于乐观锁定的版本编号 .

```typescript
@model()
class Account extends Model {
  @version()
  version: number;
}
```

### 相关

[![decaf-ts](https://github-readme-stats.vercel.app/api/pin/?username=decaf-ts&repo=decaf-ts)](https://github.com/decaf-ts/decaf-ts) [![decorator-validation](https://github-readme-stats.vercel.app/api/pin/?username=decaf-ts&repo=decorator-validation)](https://github.com/decaf-ts/decorator-validation) [![reflection](https://github-readme-stats.vercel.app/api/pin/?username=decaf-ts&repo=Reflection)](https://github.com/decaf-ts/Reflection)

### 社会

[![LinkedIn](https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge&logo=linkedin&logoColor=white)](https://www.linkedin.com/in/decaf-ts/)

#### 语文

![TypeScript](https://img.shields.io/badge/TypeScript-007ACC?style=for-the-badge&logo=typescript&logoColor=white) ![JavaScript](https://img.shields.io/badge/JavaScript-F7DF1E?style=for-the-badge&logo=javascript&logoColor=black) ![NodeJS](https://img.shields.io/badge/Node.js-43853D?style=for-the-badge&logo=node.js&logoColor=white) ![ShellScript](https://img.shields.io/badge/Shell_Script-121011?style=for-the-badge&logo=gnu-bash&logoColor=white)

## 获得帮助

如果您有错误报告, 请回答问题或建议 [创建一个新问题](https://github.com/decaf-ts/ts-workspace/issues/new/choose)。 。 。 .

## 捐款

我感谢对这一项目作出的任何贡献。 请阅读 [这个](https://npmcn.com/package/%40decaf-ts/db-decorators/workdocs/98-Contributing.md) 要开始.

## 支助

第一种最简单的方法就是支持它 [捐款](https://npmcn.com/package/%40decaf-ts/db-decorators/workdocs/98-Contributing.md). 甚至在文档中找到打字很重要.

财政支持总是受到欢迎,帮助我和该项目保持生命和健康.

所以,如果你可以, 如果这个项目以任何方式。 要么通过学习 要么只是帮助你 节省宝贵的时间, 请考虑捐赠.

## 许可证

这个项目将在 [Mozilla 公共许可证2.0](https://npmcn.com/package/%40decaf-ts/db-decorators/LICENSE.md)。 。 。 .

由开发者为开发者...

## 常见问题

### @decaf-ts/db-decorators 是什么？

不可知数据库装饰器和存储器

### 如何安装 @decaf-ts/db-decorators？

在项目目录运行 npm install @decaf-ts/db-decorators，或使用 pnpm add / yarn add / bun add。

### @decaf-ts/db-decorators 支持 TypeScript 吗？

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

### @decaf-ts/db-decorators 支持 ESM 还是 CommonJS？

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

### @decaf-ts/db-decorators 需要什么版本的 Node\.js？

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

### @decaf-ts/db-decorators 可以商用吗？

@decaf-ts/db-decorators 使用 MPL-2\.0 许可。弱 Copyleft：可以商用，也可以和闭源代码一起使用；但如果分发时修改了 MPL 授权的文件，这些文件的修改需以 MPL 开源。以上为概括，不构成法律意见，请以许可原文为准。

### @decaf-ts/db-decorators 的下载量有多少？

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

### @decaf-ts/db-decorators 还在维护吗？

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

