728x90
반응형

오늘 마이리스트 상세 더보기 기능을 만들었다.

기존의 코드를 복사하여 어떻게 짜맞추기하다가 도저히

안되서 튜터님에게 찾아가 질문을 했다.

 

설명하는 도중에 튜터님이 무슨말인지, 무슨로직인지 모르겠다고 얘기해주셨고

나보고 완전 초보이더라도 이해할 수 있게 말로 풀어서 설명하고, 쿼리문을 작성해보라고 하셨다.

 

순간 당황했지만 천천히 작성해봤더니 로직자체가 잘못된 것이었다.

그리고 쿼리문을 작성해보니 원래 사용하던 타입ORM의 원리도 조금 이해가 되었다.

 

결국 튜터님의 조언을 듣고 기존 코드를 모두 지우고

오랜시간 고민했던 코드가 30분만에 해결이 되었다.

 

  /* 로직 설명
      1. 맛집상세리스트 PAGE2에 있는 맛집을 클릭한다. (레스토랑ID)
      2. 콜렉션 아이템에 있는 레스토랑아이디와 콜렉션아이디가 둘다 일치하는 정보를 찾는다.
      3. 레스토랑의 정보와 게시물 정보를 가져온다
      레스토랑 정보: 가게이름, 업종(카페), 주소
      포스팅 정보: 설명, 이미지, 평점 ,좋아요, 댓글 등 
    */
  async getMyListsDetailPost(
    userId: number,
    restaurantId: number,
    collectionId: number,
  ) {
    try {
      //컬렉션아이템에서 맛집아이디에 관한 정보 찾기
      const existRestaurant = await this.collectionItemRepository.find({
        where: {
          restaurant: { id: restaurantId },
          collection: { id: collectionId },
        },
        select: {
          restaurant: {
            id: true,
            category_group_name: true,
            road_address_name: true,
            place_name: true,
          },
          post: {
            content: true,
            rating: true,
          },
        },
        relations: ['restaurant', 'post'],
      });

      return existRestaurant;

 

오랜만에 정말 뿌듯하고 깔끔하게 코드를 작성해서 기분이 좋은 하루였다.

다른 기능구현도 위와 같이 말로 정리하고, 쿼리문으로 먼저 찾아본후 작업해야겠다!

728x90
반응형

+ Recent posts