nestjs-database
Data access patterns, Scaling, Migrations, and ORM selection.
Installation
Follow the repository instructions for this skill and your agent. Review the files and dependencies before adding it to your workflow.
View source ↗GuidesSkill instructions
NestJS Database Standards
Priority: P0 (FOUNDATIONAL)
Database integration patterns and ORM standards for NestJS applications.
Selection Strategy
See references/persistence_strategy.md for database selection matrix and scaling patterns (Connection Pooling, Sharding).
Patterns
-
Repository Pattern: Isolate database logic.
-
TypeORM: Inject
@InjectRepository(Entity). -
Prisma: Create a comprehensive
PrismaService.
-
TypeORM: Inject
- Abstraction: Services should call Repositories, not raw SQL queries.
Configuration (TypeORM)
-
Async Loading: Always use
TypeOrmModule.forRootAsyncto load secrets fromConfigService. -
Sync: Set
synchronize: falsein production; use migrations instead.
Migrations
-
Never use
synchronize: truein production. - Execution: Run via init container or CD step.
- Zero-Downtime: Use Expand-Contract pattern (Add -> Backfill -> Drop).
- Seeding: Use factories for dev data; only static dicts for prod.
Best Practices
- Pagination: Mandatory. Use limit/offset or cursor-based pagination.
-
Indexing: Define indexes in code (decorators/schema) for frequently filtered columns (
where,order by). -
Transactions: Use
QueryRunner(TypeORM) or$transaction(Prisma) for all multi-step mutations to ensure atomicity.
Examples
Read the usage examples in the source repository.
View source ↗Source history
- Indexed on
- 2026-01-20
- Index updated
- 2026-01-26
- Branch
- main
Index and sync dates describe this directory. View the source repository for code history.
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!