All quizzesHard
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.