인프런 커뮤니티 질문&답변

띵동님의 프로필 이미지
띵동

작성한 질문수

mongoDB 기초부터 실무까지(feat. Node.js)

Transaction 적용하기

session.abortTransaction()에 대한 실제 예시 문의

해결된 질문

작성

·

210

0

 

아래 명령어를 통해 transaction이 실패했을 때 원복한다고 하는데, 저런 것은 catch문에 넣어야 하는 것이 맞나요? 아니면 if else로 문제점을 발견했을 때 처리하게 하는 걸까요?

즉, 저 코드를 실제로 사용할 때, 어떤 모습으로 들어가는 지 궁금합니다.

session.abortTransaction()

답변 1

0

김시훈님의 프로필 이미지
김시훈
지식공유자

catch가 아니라 try안에 있어야 합니다. 그리고 abortTransaction 대신에 throw를 하셔도 됩니다. 그러면 catch에서 throw한 에러를 받을 수 있어요. 이 경우에도 트렌젝션 안에서 발생한 데이터 수정은 동일하게 복구 되고요.

await session.withTransaction(async () => {
 try {
 // data_update1

 await session.abortTransactio() // or throw new Error("error message")

 // data_update2
 } catch(err){
 
 } finally {
   await session.endSession()
 }
})

 

 

 

띵동님의 프로필 이미지
띵동

작성한 질문수

질문하기