SuperAPI AI 工具集

nestjs-database

编程与开发

查看项目

更新于 10-15 22:14

技能介绍

用途:为 NestJS 项目提供数据库层规范,覆盖数据访问模式、扩展、迁移与 ORM 选型,优先级为 P0(关键)。

主要能力与模式:采用仓储模式隔离数据库逻辑;TypeORM 使用 @InjectRepository(Entity) 注入;Prisma 建立完整的 PrismaService;服务层应调用仓储而非直接写原始 SQL。数据库选型矩阵与扩展模式(连接池、分片)见 references/persistence_strategy.md。

配置与迁移:TypeORM 始终用 TypeOrmModule.forRootAsync 从 ConfigService 加载密钥;生产环境设置 synchronize: false,改用迁移。禁止在生产使用 synchronize: true。修改 .entity.ts 后必须用 pnpm migration:generate 生成迁移,并在应用前检查生成文件是否与实体变更一致。生产策略:推荐 CI/CD 集成,在部署前或部署后任务运行 pnpm migration:run(如 GitHub Actions、GitLab CI),并确保生产环境变量正确;受限数据库访问时可手动执行 SQL,用 typeorm migration:show 获取 SQL 或复制 up 方法 SQL 到管理工具(如 Supabase SQL Editor),并始终在迁移元数据表中记录手动执行;破坏性变更采用 Expand-Contract 模式(新增→回填→删除)实现零停机;种子数据开发用工厂,生产仅用静态字典。

最佳实践:分页为强制要求,使用 limit/offset 或游标分页;在代码(装饰器/schema)中为高频过滤列(where、order by)定义索引;所有多步变更用 QueryRunner(TypeORM)或 $transaction(Prisma)保证原子性。

反模式:生产禁用 synchronize;服务不得返回原始实体,离开服务层前映射为 DTO;禁止无分页的列表查询,所有列表端点必须实现 limit/offset 或游标分页。

限制:资料未提供具体版本要求、依赖安装命令、完整代码示例及性能基准,相关细节暂未提供。