코딩/TypeORM

Transaction

춘 몽 2024. 4. 24. 04:20
// 주입
private readonly dataSource: DataSource,


// 사용
const queryRunner = this.dataSource.createQueryRunner(); // 생성
await queryRunner.connect(); // 연결
await queryRunner.startTransaction(); // 시작

try {
     const 작업 = await queryRunner.manager.save(테이블명, 데이터) // 작업
     await queryRunner.commitTransaction(); // 커밋
	 마무리 작업할거
} catch (error) {
     await queryRunner.rollbackTransaction(); // 롤백
     throw new InternalServerErrorException('에러 메시지'); // 에러 상태는 상황에 맞춰서
} finally {
      queryRunner.release(); // 연결해제
}


// 예시코드

// create로 만든 후 넣기 => 테이블 지정안해도 됨, 넣는 코드 깔끔해짐
const farmInputData = this.farmRepository.create({
        ...createFarmInput,
        ...coordinates,
        farm_img,
      });
const farm = await queryRunner.manager.save(farmInputData);


// 한번에 넣기 => 테이블 지정 필요, 한번에 작업 끝
 const farm = await queryRunner.manager.save(Farm, {
        ...createFarmInput,
        ...coordinates,
        farm_img,
      });

// 다른 테이블에, update
const updateResult = await queryRunner.manager.update(
        User,
        { id: user_id },
        { user_type: 1 },
      );
      
// 데이터 객체면 바로 넣기도 가능
const user = await queryRunner.manager.save(User, userData);

 

'코딩 > TypeORM' 카테고리의 다른 글

사용 방법 예시들  (0) 2024.04.22
entities  (0) 2024.04.22
초기 설정 + 공식문서 링크  (0) 2024.04.17