반응형
queryRunner를 이용한 트랜잭션 제어
queryRunner는 single database connection을 제공하기 때문에 트랜잭션 제어가 가능하다.
좀더 세부적으로 직접 트랜잭션을 제어하고 싶을 때에는 QueryRunner를 사용하면 된다.
// queryRunner 생성!!
const queryRunner = dataSource.createQueryRunner()
// 새로운 queryRunner를 연결한다.
await queryRunner.connect()
// 생성한 쿼리러너를 통해 쿼리문을 날리는 것도 가능하다.
await queryRunner.query("SELECT * FROM users")
// 새로운 트랜잭션을 시작한다는 의미의 코드이다.
await queryRunner.startTransaction()
try {
// 원하는 트랜잭션 동작을 정의하면 된다!
await queryRunner.manager.save(user1)
await queryRunner.manager.save(user2)
// 모든 동작이 정상적으로 수행되었을 경우 커밋을 수행한다.
await queryRunner.commitTransaction()
} catch (err) {
// 동작 중간에 에러가 발생할 경우엔 롤백을 수행한다.
await queryRunner.rollbackTransaction()
} finally {
// queryRunner는 생성한 뒤 반드시 release 해줘야한다.
await queryRunner.release()
}
반응형
'Node.JS' 카테고리의 다른 글
NodeJS Crypto 모듈을 활용한 데이터 보안 강화 (0) | 2023.05.25 |
---|---|
@nestjs/config 사용법 (0) | 2023.02.16 |
NestJS TypeORM을 사용해보자 (0) | 2023.02.14 |
NestJS Pipes 이용하기 (0) | 2023.02.10 |
Nest.js를 시작해보자 (0) | 2023.02.09 |
댓글