研发协作
在 NestJS 中快速生成基于 Drizzle ORM…
当需要在 NestJS 项目中为某个实体快速搭建数据库驱动的 CRUD 功能时,用脚本一键生成模块、控制器、服务、DTO、Schema 和测试。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 59/100 ×0.15
适用场景
在 NestJS 中快速生成基于 Dri特定
解决思路
- 收集实体定义:确定实体名称(如 user、product、order)、字段列表及类型(参考 references/field-types.md 支持的类型)、必填字段与带默认值的可选字段。
- 运行生成器脚本:python scripts/generate_crud.py --feature <name> --fields '<json-array>' --output <path>,命令行传 JSON 数组时用单引号包裹以避免转义问题。
- 验证生成的文件是否齐全:执行 ls -la libs/server/<feature-name>/src/lib/,确认存在 controllers/、services/、dto/、schema/ 目录以及 <feature>-feature.module.ts。
- 运行 TypeScript 编译检查:cd libs/server && npx tsc --noEmit。
- 执行单元测试:cd libs/server && npm test -- --testPathPattern=<feature-name>。
- 将生成的模块手动集成到应用模块中:在 app.module.ts 里 import { {{FeatureName}}FeatureModule } from '@your-org/server-{{feature}}',并在 imports 中使用 {{FeatureName}}FeatureModule.forRootAsync({ useFactory: () => ({ defaultPageSize: 10, maxPageSize: 100 }) })。
- 提交前先验证:始终先跑 tsc --noEmit 和测试再提交生成的代码。
- 在生成的服务中补充业务逻辑,并根据 API 需求调整 Zod 校验规则。
- 为生成的 Drizzle schema 单独创建数据库迁移。
- 在应用代码中引用生成的类型。
- 注意生成代码的约束:删除操作仅支持软删除(deletedAt 时间戳),硬删除需手动修改;生成代码不含认证守卫,需按安全需求自行添加;仅支持基础 CRUD,复杂查询、事务或业务逻辑需手动实现。
适用边界 · 注意事项
- 需要复杂查询、事务或复杂业务逻辑时(生成器只覆盖基础 CRUD)。
- 需要硬删除而非软删除时(需手动修改生成代码)。
- 需要内置认证/授权守卫时(生成代码不含 auth guards)。