codejump

Transactions & Advanced

Preview — 3 of 10 questions

When using a QueryRunner directly to manage a transaction, which sequence is correct?

Aconnect() → work → commitTransaction(); no rollback needed
BstartTransaction() → connect() → work → release() → commitTransaction()
CstartTransaction() → work → release(); commit is automatic
Dconnect() → startTransaction() → work → commitTransaction()/rollbackTransaction() → release()

Why is the standalone @Transaction()/@TransactionManager() decorator approach discouraged in modern NestJS/TypeORM code?

AIt was deprecated/removed in favour of explicit dataSource.transaction() or QueryRunner, partly because decorator-injected managers don't integrate cleanly with NestJS DI and request scope
BIt cannot roll back
CIt only works with MySQL
DIt double-commits

Why use TypeOrmModule.forRootAsync() with ConfigService instead of forRoot() with a literal object?

AIt is the only way to set synchronize
BIt allows connection options to be built from injected, validated configuration (e.g. env vars) resolved at runtime
CIt opens connections lazily on first query
DIt is required for PostgreSQL

Sign up free to play

Answer all 10 questions (7 more), see explanations for every answer, and track your score.