• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

5분 경에 질문있습니다.

24.04.28 05:12 작성 조회수 47

0

@Post() @UseGuards(AccessTokenGuard) @UseInterceptors(TransactionInterceptor) async postPost(@User("id") userId: number, @Body() body: CreatePostDto, @QueryRunner() qr: QR) { // temp -> posts로 옮긴다음에 포스팅 const post = await this.postsService.createPost(userId, body, qr); // throw new InternalServerErrorException("에러가 생겼습니다."); // 포스트만 생성하고, 이미지는 생성안해버림 throw 에러에서 걸림. 원래는 포스트 게시글이 생기면 안됨. for (let i = 0; i < body.images.length; i++) { await this.PostsImagesService.createPostImage( { post, order: i, path: body.images[i], type: ImageModelType.POST_IMAGE, }, qr, ); } // Transaction 타입에 따라서 Transaction이 커밋 되기전에 최신 값을 가져오지 못할 수 있다. (service에서 해당 문제 처리 직접 qr받아서) // 가장 최근상태의 포스트를 받아와서, 반환해줌. return this.postsService.getPostById(post.id, qr);Transaction 타입에 따라서 Transaction이 커밋 되기 전에 최신 값을 가져오지 못할 수 있다고 하셔서, getPostById service에서 직접적으로 qr을 주입받아서, 사용했는데 정확히 어떤 이유로 최신 값을 못받아오는지 잘 이해가 안가서, 자세히 설명을 해주실 수 있나요?

답변 1

답변을 작성해보세요.

0

안녕하세요!

그렇게 말씀드린 이유는 한 트랜잭션 안에 묶지 않으면 하나의 isolation으로 보지 않을 수 있지 않을까라는 생각이 들었습니다. (테스트해본 사항은 아닙니다)

혹시 이 질문이 맞으실까요?

감사합니다!