DEV Community

Cover image for Como utilizar transactions de forma simples no framework Nest.js
angelo rogerio rubin
angelo rogerio rubin

Posted on

Como utilizar transactions de forma simples no framework Nest.js

O Nest.js fornece suporte para transações usando a biblioteca TypeORM, que é uma biblioteca ORM popular para Node.js.

Para utilizar transações em Nest.js, você pode seguir os seguintes passos:

1 - Importe a classe Connection da biblioteca TypeORM:

import { Connection } from 'typeorm';
Enter fullscreen mode Exit fullscreen mode

2 - Injete a conexão do TypeORM no seu serviço ou controlador:

import { Injectable } from '@nestjs/common';
import { InjectConnection } from '@nestjs/typeorm';
import { Connection } from 'typeorm';

@Injectable()
export class MyService {
  constructor(
    @InjectConnection() private connection: Connection,
  ) {}
}
Enter fullscreen mode Exit fullscreen mode

3 - Utilize o método transaction do objeto connection para executar uma transação:

await this.connection.transaction(async (manager) => {
  // Execute as operações de banco de dados aqui
});
Enter fullscreen mode Exit fullscreen mode

Dentro da função passada para transaction, você pode executar as operações de banco de dados que desejar, como inserções, atualizações ou exclusões. Se uma exceção for lançada dentro da função, a transação será revertida automaticamente.

Por exemplo, se você quiser criar um novo usuário e um novo post ao mesmo tempo em uma transação, pode fazer algo assim:

await this.connection.transaction(async (manager) => {
  const user = await manager.create(User, { name: 'John' });
  const post = await manager.create(Post, { title: 'Hello, World!', content: 'This is my first post.' });
  await manager.save(user);
  await manager.save(post);
});
Enter fullscreen mode Exit fullscreen mode

Observe que estamos usando o método create do gerenciador de entidades do TypeORM para criar novos objetos do usuário e do post, e depois estamos salvando esses objetos usando o método save. Essas operações são executadas dentro da transação. Se algo der errado, a transação será revertida e nenhum usuário ou post será salvo no banco de dados.

Isso deve ajudá-lo a entender como utilizar transações de forma simples no framework Nest.js com o TypeORM.

Bons estudos!

Top comments (0)