TypeORM Transactions
NestJS 🔴 SeniorDefinition
Mecanisme pour executer plusieurs operations de base de donnees de facon atomique. Soit toutes reussissent, soit toutes sont annulees.
Analogie
Comme un virement bancaire : le debit ET le credit doivent passer ensemble, sinon rien ne bouge.
Exemple de code
async transfer(from: string, to: string, amount: number) {
await this.dataSource.transaction(async (manager) => {
await manager.decrement(Account, { id: from }, 'balance', amount);
await manager.increment(Account, { id: to }, 'balance', amount);
});
}
Cas d'usage
Garantir la coherence des donnees lors d'operations multi-tables comme les paiements.
Anti-pattern
Effectuer des operations liees sans transaction, risquant un etat incoherent en cas d'erreur.