-
카테고리
-
세부 분야
백엔드
-
해결 여부
해결됨
session.abortTransaction()에 대한 실제 예시 문의
23.03.20 19:58 작성 조회수 134
0
아래 명령어를 통해 transaction이 실패했을 때 원복한다고 하는데, 저런 것은 catch문에 넣어야 하는 것이 맞나요? 아니면 if else로 문제점을 발견했을 때 처리하게 하는 걸까요?
즉, 저 코드를 실제로 사용할 때, 어떤 모습으로 들어가는 지 궁금합니다.
session.abortTransaction()
답변을 작성해보세요.
0
김시훈
지식공유자2023.03.21
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()
}
})
답변 1