728x90
// 주입
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('에러 메시지'); // 에러 상태는 상황에 맞춰서 아니면 그냥 throw new error로 바로 에러 던지기
} 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);

queryRunner 길면 qr로 줄여쓰면 좋음.

728x90

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

Query Builder  (0) 2024.10.22
통계  (0) 2024.10.22
Methods  (0) 2024.10.15
Find Options  (0) 2024.10.15
Relationship  (0) 2024.10.15

+ Recent posts