인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

민혁님의 프로필 이미지

작성한 질문수

[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core

Comment 생성 API 작업하기

특정 post의 특정 코맨트 조회 API 관련 질문

작성

·

62

0

@Get(':commentId')
getComment(@Param('commentId', ParseIntPipe) commentId: number) {
  return this.commentsService.getCommentById(commentId);
}

안녕하세요 코드팩토리님해당 강의 듣는중 CommentController의 getComment 메서드에서 분명 특정 post의 특정 comment를 가져와야할거같은데 보면 commentId로만 조회하는걸로 보여집니다.제가 이해하지 못하고 의도를 파악하지 못한건지 반대인지 확인이 필요해보입니다. 상기는 해당 문제되어 보여지는 코드입니다. 강의에서는 postman을 사용해 해당 엔드포인트로 요청하는 장면이있는데 postId에 152? 게시글ID 값을 넣어서 조회하는데 코드대로면 의미가 없어보입니다.

감사합니다.

답변 2

0

민혁님의 프로필 이미지
민혁
질문자

//CommentController
@Get(':commentId')
getComment(
  @Param('postId', ParseIntPipe) postId: number,
  @Param('commentId', ParseIntPipe) commentId: number,
) {
  return this.commentsService.getCommentById(postId, commentId);
}
//--------------------------------------------------------------
//CommentService
  async getCommentById(postId: number, commentId: number) {
    const post = await this.postsService.getPostById(postId);

    const comment = await this.commentsRepository.findOne({
      ...DEFAULT_COMMENT_FIND_OPTIONS,
      where: {
        post: {
          id: post.id,
        },
        id: commentId,
      },
    });

    if (!comment) {
      throw new BadRequestException(
        `id: ${commentId} Comment는 존재하지 않습니다.`,
      );
    }

    return comment;
  }

제 의도대로 수정해봤습니다.

민혁님의 프로필 이미지
민혁
질문자

혹시 피드백 가능하시면 부탁드립니다!

코드팩토리님의 프로필 이미지
코드팩토리
지식공유자

안녕하세요!

특정 post의 특정 comment id는 그냥 comment id와 아무런 차이가 없습니다.

어차피 ID는 유니크하기 때문이죠.

감사합니다!

민혁님의 프로필 이미지
민혁
질문자

강의에서는 postId 값과 commentId를 이용해 postman에서 조회를 하는데 코드팩토리님 코드에서는 해당 엔드포인트에서 postId를 받을수 있는 방법이 없는데 조회를 하고있다는 말씀을 드리는 겁니다.

민혁님의 프로필 이미지
민혁
질문자

코드팩토리님이 말씀하신 의도라면 postman에서 특정 코맨트 조회시 postId를 param에 넣지 않아야 의도된 코드가아닐까 생각이듭니다. 강의에서는 분명 조회시 152번 포스트의 코맨트를 조회한다고 하셔서 오해의 소지가 있지 않을까합니다.

코드팩토리님의 프로필 이미지
코드팩토리
지식공유자

안녕하세요!

postId를 받을 수 없다는게 어떤 말씀이실까요?

post -> comment 로 진입한다면 post의 id를 받을 수 있습니다. (comment를 가져오는 API에서는 post id를 가져올 수 없지만 이건 당연한거라 이 부분을 말씀하시는건지 잘 모르겠습니다.)

저의 이해와 관계없이 post id가 필요하지 않게 작성을 하셔도 상관 없습니다. 예를들어 /post/comment/:commentId 이런식이 되겠죠.

감사합니다!

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. 민혁님.

NestJS에서 특정 post의 특정 comment를 조회하는 API 구현 관련하여 궁금증이 있으신 것 같습니다. 제출하신 코드에서는 commentId만으로 댓글을 조회하게 되어 있습니다. 그러나 실제로 실습하신 내용에서는 postId 또한 이용해 댓글을 조회하고자 하셨던 것으로 보입니다.

코드에서 의도한 대로 특정 post에 속한 comment를 조회하고 싶으시다면, 다음과 같은 방법을 사용하실 수 있습니다:

  1. 라우트에 postId 포함시키기: URL의 경로에 postId를 포함시키면 특정 post에 대한 특정 comment를 조회하는 것처럼 보일 수 있습니다.
    
    @Get('posts/:postId/comments/:commentId')
    getComment(
    @Param('postId', ParseIntPipe) postId: number,
    @Param('commentId', ParseIntPipe) commentId: number
    ) {
    return this.commentsService.getCommentByPostIdAndCommentId(postId, commentId);
    }
    

  2. 서비스에서 추가 필터링: 이 구현에서는 서비스 레이어에서 주어진 postIdcommentId에 맞는 데이터를 조회해야 합니다. commentsService에서 이러한 옵션을 처리하도록 해야 합니다.

관련 구현에 필요한 이해를 돕기 위해 유사한 질문과 설명이 실린 게시물들을 참고하세요.

문제 해결에 도움이 되길 바라며, 추가적인 질문 사항이 있으시면 계속해서 궁금한 점을 문의해 주세요.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

민혁님의 프로필 이미지

작성한 질문수

질문하기