TypeORM Transactions
NestJS 🔴 SeniorDéfinition
Mécanisme pour exécuter plusieurs opérations de base de données de façon atomique. Soit toutes réussissent, soit toutes sont annulées.
Analogie
Comme un virement bancaire : le débit ET le crédit 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 cohérence des données lors d'opérations multi-tables comme les paiements.
Anti-pattern
Termes liés
En entretien
Explique-moi à quoi sert une transaction TypeORM.
Ça permet d'exécuter plusieurs opérations base de données de façon atomique : soit toutes réussissent, soit toutes sont annulées. C'est comme un virement bancaire où le débit et le crédit doivent passer ensemble, sinon rien ne bouge.
Quand est-ce que tu éviterais de t'en passer ?
Dès qu'il y a des opérations liées sur plusieurs tables, comme un paiement qui débite un compte et crédite un autre : sans transaction on risque un état incohérent en cas d'erreur au milieu.
Comment ça s'écrit concrètement dans le code ?
On passe par dataSource.transaction avec un callback qui reçoit un manager, et on effectue toutes les opérations liées via ce manager, comme décrémenter puis incrémenter deux comptes.
Fiche mise à jour le 2026-09-27