TypeORM Transactional CLS Hooked 项目教程
1. 项目的目录结构及介绍
typeorm-transactional-cls-hooked/
├── src/
│ ├── index.ts
│ ├── transactional-decorator.ts
│ ├── cls-hooked.ts
│ ├── typeorm-transaction.ts
│ ├── utils.ts
│ └── test/
│ ├── index.spec.ts
│ ├── transactional-decorator.spec.ts
│ └── typeorm-transaction.spec.ts
├── package.json
├── tsconfig.json
└── README.md
src/
:项目的源代码目录。index.ts
:项目的入口文件。transactional-decorator.ts
:事务装饰器的实现。cls-hooked.ts
:使用cls-hooked
进行上下文管理的实现。typeorm-transaction.ts
:与 TypeORM 事务相关的逻辑。utils.ts
:工具函数。test/
:测试文件目录。index.spec.ts
:入口文件的测试。transactional-decorator.spec.ts
:事务装饰器的测试。typeorm-transaction.spec.ts
:TypeORM 事务逻辑的测试。
package.json
:项目的依赖管理文件。tsconfig.json
:TypeScript 配置文件。README.md
:项目说明文档。
2. 项目的启动文件介绍
项目的启动文件是 src/index.ts
,它主要负责初始化 cls-hooked
的命名空间,并导出事务装饰器和其他必要的模块。以下是 index.ts
的主要内容:
import { createNamespace } from 'cls-hooked';
import { TransactionalDecorator } from './transactional-decorator';
import { TypeORMTransaction } from './typeorm-transaction';
const namespace = createNamespace('typeorm-transactional-cls-hooked');
export const transactional = new TransactionalDecorator(namespace, new TypeORMTransaction());
export { runInTransaction } from './typeorm-transaction';
export { getNamespace, Namespace } from 'cls-hooked';
createNamespace
:创建一个cls-hooked
的命名空间。TransactionalDecorator
:事务装饰器的实现类。TypeORMTransaction
:与 TypeORM 事务相关的逻辑类。transactional
:导出的事务装饰器实例。runInTransaction
:在事务中运行函数的工具函数。getNamespace
和Namespace
:从cls-hooked
导出的命名空间相关函数和类型。
3. 项目的配置文件介绍
项目的配置文件主要是 tsconfig.json
和 package.json
。
tsconfig.json
tsconfig.json
是 TypeScript 的配置文件,用于配置 TypeScript 编译器的行为。以下是该文件的主要内容:
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"outDir": "./dist",
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true
},
"include": [
"src/**/*"
]
}
target
:指定编译后的 JavaScript 版本。module
:指定模块系统。outDir
:指定编译输出目录。strict
:启用所有严格类型检查选项。esModuleInterop
:启用 ES 模块互操作性。skipLibCheck
:跳过库文件的类型检查。forceConsistentCasingInFileNames
:强制文件名大小写一致。include
:指定包含的文件和目录。
package.json
package.json
是 Node.js 项目的依赖管理文件,用于管理项目的依赖和脚本。以下是该文件的主要内容:
{
"name": "typeorm-transactional-cls-hooked",
"version": "1.0.0",
"description": "A transactional decorator for TypeORM using cls-ho