DB 设计器: 数据库操作简单
Db-装饰器库为数据库操作提供全面的TypeScript装饰器和公用设备. 它执行寄存器模式,支持模型定义,验证,身份管理和操作钩. 该库使开发者能够用装饰器定义数据库模型,通过验证执行CRUD操作,并通过操作钩自定义数据库操作期间的行为.
2025-11-26. 发布docs刷新. 见 工作文件/报告/报告 罚单摘要.
核心概念
Repository: 执行寄存器模式的抽象基础类,为CRUD操作提供一致的接口.- 钩子行动编号:
Repository类提供Prefix财务报告和审定财务报表Suffix方法,允许您在主操作前后执行自定义逻辑. - 装饰器操作: 装饰者喜欢
@onCreate, (中文(简体) ),@onUpdate, (中文(简体) ),@onDelete,以及@onRead允许您将自定义逻辑附加到特定的仓库操作中. Context: 用于通过应用程序的不同层传递背景信息的类.- 与数据库有关的装饰: 一套处理共同数据库任务的装饰器,例如定义主密钥(
@id),生成值(@generated),散列值(@hash),组成来自其他属性的值(@composed),并管理版本编号(@version) (中文(简体) ).
现有文件 这里
最小大小: 9 KB kb gziped
DB 设计器
Db-decorators库是数据库操作的强大TypeScript框架,它利用了装饰器来简化数据库交互. 它为执行寄存器模式提供了一个全面的解决方案,对模型定义、验证、身份管理和操作钩提供了内在支持.
关键特性
- 仓库模式的执行
- 摘要
BaseRepository分类为 CRUD 操作提供基础 - 混凝土
Repository有验证支持的类 - 支助散装作业
BulkCrudOperator接口
- 模型管理
- 带有类型脚本装饰器的模型定义
- 身份管理
@id()装饰 - 财产构成
@composed()财务报告和审定财务报表@composedFromKeys()装饰器 - 使用
@version()装饰 - 带有
@transient()装饰
- 钩子行动
- 操作前钩
@on(), (中文(简体) ),@onCreate(), (中文(简体) ),@onUpdate()等 (中文(简体) ). - 操作后钩
@after(), (中文(简体) ),@afterCreate(), (中文(简体) ),@afterUpdate()等 (中文(简体) ). - 自定义操作处理器通过
Operations登记
- 内容管理
- 父子关系的等级上下文链
- 国家管理的背景积累
- 具体行动背景的创建
- 验证
- 与装饰- 验证库合并
- 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;
}
相关
社会
语文
获得帮助
如果您有错误报告, 请回答问题或建议 创建一个新问题。 。 。 .
捐款
我感谢对这一项目作出的任何贡献。 请阅读 这个 要开始.
支助
第一种最简单的方法就是支持它 捐款. 甚至在文档中找到打字很重要.
财政支持总是受到欢迎,帮助我和该项目保持生命和健康.
所以,如果你可以, 如果这个项目以任何方式。 要么通过学习 要么只是帮助你 节省宝贵的时间, 请考虑捐赠.
许可证
这个项目将在 Mozilla 公共许可证2.0。 。 。 .
由开发者为开发者...