TypeORM Transactions

NestJS 🔴 Senior

Definition

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.
#database#interview