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';
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,
) {}
}
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
});
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);
});
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)