DéveloppeurWeb.Com
    DéveloppeurWeb.Com
    • Agile Zone
    • AI Zone
    • Cloud Zone
    • Database Zone
    • DevOps Zone
    • Integration Zone
    • Web Dev Zone
    DéveloppeurWeb.Com
    Home»Web Dev Zone»Comment effectuer une transaction NestJS TypeORM à l’aide de QueryRunner ?
    Web Dev Zone

    Comment effectuer une transaction NestJS TypeORM à l’aide de QueryRunner ?

    novembre 1, 2021
    Comment effectuer une transaction NestJS TypeORM à l'aide de QueryRunner ?
    Share
    Facebook Twitter Pinterest Reddit WhatsApp Email

    Dans cet article, nous verrons comment effectuer un Transaction NestJS TypeORM en utilisant la classe TypeORM QueryRunner. C’est également la méthode recommandée pour gérer les transactions dans NestJS.

    Si vous débutez dans l’utilisation de TypeORM avec NestJS, reportez-vous à cet article détaillé sur l’intégration NestJS TypeORM.

    1. Le besoin de gestion des transactions

    Les transactions sont l’un des concepts les plus importants lors de la gestion des bases de données. Fondamentalement, une transaction est une unité de travail. Nous devons le traiter dans son ensemble. Soit cela arrive complètement, soit cela ne se produit pas.

    Par exemple, vous pouvez penser à transférer de l’argent d’un compte à un autre. À première vue, ce processus implique plusieurs étapes telles que le retrait de l’argent du premier compte, puis son transfert sur le compte du destinataire. Le transfert échoue si même une des étapes échoue. Par conséquent, nous devons traiter ces opérations sous la forme de transactions.

    2. La propriété ACID des transactions

    Une transaction doit avoir les propriétés ci-dessous. Ils sont communément appelés propriétés ACID.

    • Atomicité — Cela signifie que les opérations d’une transaction sont une seule unité qui réussit ou échoue.
    • Cohérence — Une transaction valide fait passer la base de données d’un état valide à un autre.
    • Isolation — Les transactions doivent être isolées. En d’autres termes, les transactions peuvent se produire simultanément. Fondamentalement, les transactions valides ne provoquent pas d’état incohérent. De plus, l’état intermédiaire de la transaction doit être invisible pour les autres transactions.
    • Durabilité — Les modifications apportées par une transaction doivent être durables. En d’autres termes, les changements devraient survivre même à une défaillance du système.

    3. Gestion des transactions NestJS TypeORM

    Les TypeORM le paquet est livré avec le Lien classer. Nous allons injecter cette classe dans notre BibliothèqueService Exemple.

    Voir le code ci-dessous :

    library.service.tsconstructor(
    @InjectRepository(Book)
        private bookRepository: Repository<Book>,
        private connection: Connection
    ){}

    Les Lien classe réside dans le dactylographie emballer. La déclaration d’importation ci-dessous sera nécessaire.

    import { Connection } from "typeorm";

    Les Lien L’objet ne représente pas une seule connexion à la base de données. Il pointe essentiellement vers un pool de connexions. Pour faire référence à une seule collection de bases de données, nous utilisons le Exécuteur de requêtes classer. Fondamentalement, chaque instance du QueryRunner est une connexion.

    4. Utilisation de la classe QueryRunner

    Nous pouvons maintenant utiliser le Lien objet pour créer une transaction.

    Voir l’exemple ci-dessous :

    async createMultipleBooks(books: Book[]) {
       const queryRunner = this.connection.createQueryRunner();
    
            await queryRunner.connect();
            await queryRunner.startTransaction();
    
            try {
                await queryRunner.manager.save(books[0]);
                await queryRunner.manager.save(books[1]);
    
                await queryRunner.commitTransaction();
            }catch (err) {
                await queryRunner.rollbackTransaction();
            }finally {
                await queryRunner.release();
            }
    }

    Fondamentalement, nous utilisons une instance de QueryRunner pour établir une connexion et démarrer une transaction. Ensuite, nous sauvegardons tous les livres (dans ce cas 2 livres) dans le cadre d’une même transaction. Si quelque chose ne va pas, nous annulons tout. Sinon, nous validons la transaction et libérons la connexion.

    Conclusion

    Avec cela, nous en avons terminé avec la transaction NestJS TypeORM à l’aide de QueryRunner. Vous pouvez trouver le code pour le même sur Github.

    Si vous avez des commentaires ou des questions sur la publication, n’hésitez pas à écrire dans la section commentaires ci-dessous.

    Share. Facebook Twitter Pinterest LinkedIn WhatsApp Reddit Email
    Add A Comment

    Leave A Reply Cancel Reply

    Catégories

    • Politique de cookies
    • Politique de confidentialité
    • CONTACT
    • Politique du DMCA
    • CONDITIONS D’UTILISATION
    • Avertissement
    © 2023 DéveloppeurWeb.Com.

    Type above and press Enter to search. Press Esc to cancel.