@decaf-ts/db-decorators

中文文档
0.20.0发布于 2026/11/07MPL-2.0TypeScriptESM + CJS构建来源已验证近 30 天下载 2441

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

中文使用文档
文档目录20 节
  1. DB 设计器: 数据库操作简单
  2. 核心概念
  3. DB 设计器
  4. 仓库
  5. 创建仓库
  6. 钩子行动
  7. 装饰器操作
  8. A. 背景情况
  9. 其他装饰
  10. @id
  11. @generated
  12. @hash
  13. @composed
  14. @version
  15. 相关
  16. 社会
  17. 获得帮助
  18. 捐款
  19. 支助
  20. 许可证

Banner

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

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

2025-11-26. 发布docs刷新. 见 工作文件/报告/报告 罚单摘要.

核心概念

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

Licence GitHub language count GitHub top language

Build & Test CodeQLSnyk Analysis Pages builder .github/workflows/release-on-tag.yaml

Open Issues Closed Issues Pull Requests Maintained

Forks Stars Watchers

Node Version NPM Version

现有文件 这里

最小大小: 9 KB kb gziped

DB 设计器

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

关键特性

  1. 仓库模式的执行
  • 摘要 BaseRepository 分类为 CRUD 操作提供基础
  • 混凝土 Repository 有验证支持的类
  • 支助散装作业 BulkCrudOperator 接口
  1. 模型管理
  • 带有类型脚本装饰器的模型定义
  • 身份管理 @id() 装饰
  • 财产构成 @composed() 财务报告和审定财务报表 @composedFromKeys() 装饰器
  • 使用 @version() 装饰
  • 带有 @transient() 装饰
  1. 钩子行动
  • 操作前钩 @on(), (中文(简体) ), @onCreate(), (中文(简体) ), @onUpdate()等 (中文(简体) ).
  • 操作后钩 @after(), (中文(简体) ), @afterCreate(), (中文(简体) ), @afterUpdate()等 (中文(简体) ).
  • 自定义操作处理器通过 Operations 登记
  1. 内容管理
  • 父子关系的等级上下文链
  • 国家管理的背景积累
  • 具体行动背景的创建
  1. 验证
  • 与装饰- 验证库合并
  • CRUD 操作中自动验证
  • 通过装饰器自定义验证规则

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

如何使用

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

仓库

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

创建仓库

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

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 方法,允许您在主操作前后执行自定义逻辑.

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 允许您将自定义逻辑附加到特定的仓库操作中.

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 类用于通过应用程序的不同层传递背景信息.

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

将属性标为主密钥 .

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

@generated

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

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

@hash

自动挥霍属性的值 .

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

@composed

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

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

  firstName: string;
  lastName: string;
}

@version

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

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

decaf-ts decorator-validation reflection

社会

LinkedIn

语文

TypeScript JavaScript NodeJS ShellScript

获得帮助

如果您有错误报告, 请回答问题或建议 创建一个新问题。 。 。 .

捐款

我感谢对这一项目作出的任何贡献。 请阅读 这个 要开始.

支助

第一种最简单的方法就是支持它 捐款. 甚至在文档中找到打字很重要.

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

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

许可证

这个项目将在 Mozilla 公共许可证2.0。 。 。 .

由开发者为开发者...

版本与发布记录

@decaf-ts/db-decorators 共发布 137 个版本,首次发布于 2024/10/01;过去 12 个月发布了 71 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.20.0latest2026/11/076 天前
0.19.52026/09/201 个月前
0.19.42026/09/072 个月前
0.19.22026/09/032 个月前
0.19.12026/09/032 个月前
0.19.02026/09/012 个月前

关于 @decaf-ts/db-decorators 的常见问题

@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 和提交记录判断。