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 |