inflearn logo
강의

Course

Instructor

Svelte REST-API project

Implementing view mode change

[보기모드 변경 구현] 좋아요 보기 구현에서 문제 발견

Resolved

423

ggamsi04187932

12 asked

0

user7@user7.com이라는 계정을 만들어서,

총 3개의 게시물에 좋아요를 클릭하였습니다.

아래 스크린샷을 보면 알 수 있듯이,

user1이 작성한 게시물 2개에 좋아요를 클릭했고

나머지 1개는 user7이 작성한 게시물에 좋아요를 클릭했습니다.

그러면 좋아요 보기를 클릭하면, 3개의 게시물만 화면에 나와야하고 user1이 작성한 게시물 2개 user7이 작성한 게시물이 1개 나와야 합니다.

그러나 아래 스크린샷을 보면, 좋아요를 클릭한 게시물의 작성자가 모두 user7인 것을 볼 수 있습니다.

확인을 해보니 백엔드 API(GET /likes)에서 날리는 쿼리에 문제가 있었습니다.

likeArticles = await db.like.findMany({
      where: {
        userId: userId,
      },
      include: {
        article: {
          select: {
            id: true,
            content: true,
            commentCount: true,
            likeCount: true,
            createdAt: true,
          },
        },
        user: {
          select: {
            id: true,
            name: true,
            email: true,
          },
        },
      },
      orderBy: {
        id: "desc",
      },
      skip: skip,
      take: pageSize,
    });

위에서 user를 조인하여 정보를 가져오는데

해당 user는 article 작성자가 아니라 좋아요를 클릭한 사용자의 정보입니다.

그러므로 아래와 같이 article의 작성자 정보를 가져오도록 aritcle 내부에 user를 추가해줘야 합니다.


 likeArticles = await db.like.findMany({
      where: {
        userId: userId,
      },
      include: {
        article: {
          select: {
            id: true,
            content: true,
            commentCount: true,
            likeCount: true,
            createdAt: true,
            user: true,
          },
        },
      },
      orderBy: {
        id: "desc",
      },
      skip: skip,
      take: pageSize,
    });

 

그리고 가져온 정보를 평탄화하는 로직에서 userId, userName, userEmail 부분을 수정해줘야 합니다.

    flattenArticles = likeArticles.map((article) => {
      let newArticle = {
        id: article.article.id,
        content: article.article.content,
        commentCount: article.article.commentCount,
        likeCount: article.article.likeCount,
        createdAt: article.article.createdAt,
        userId: article.article.user.id,
        userName: article.article.user.name,
        userEmail: article.article.user.email,
        likeMe: true,
      };

      return newArticle;
    });

 

그럼 다음과 같이 정상적인 결과를 가져올 수 있습니다.

 

rest-api svelte

Answer 1

1

Indie Coder

피드 감사합니다.

이부분 git에 수정해 두도록 하겠습니다

스프링부트 서버 에러나요

0

17

1

DDD 는 마이바티스와 잘 맞지 않는건가요?

0

46

1

스프링부트 버전 문의드립니다.

0

38

1

Dto와 Entity 사용 관련 질문

0

31

2

강의 자료 코드

0

39

2

application.properties 작성 관련 질문

0

46

2

cascade 질문

0

39

1

관리자 페이지 상품 삭제 API

1

32

1

@types/bcrypt 설치과정이 누락된것같습니다.

0

48

1

process.env port key 에러

0

46

1

추상화

0

50

1

이미지 처리 라우트 관련 문의

0

67

2

지금 이게 맞는건지 문의드립니다.

0

45

1

프론트 api.js의 요청 headers 옵션의 cors 관련 설정 질문

0

61

2

[npm start 오류나는 분들을 위하여]노드 최신버전 사용하시면 오류가 발생합니다.

0

397

1

첫 메인 화면 $isLogin 인증 부분 궁금한점이 있습니다.

0

550

2

[앱 완성도 높이기3 - URL을 통한 보기모드 변경] 로그인 성공 후 라우팅 문제

0

311

1

[앱 완성도 높이기2 - 날짜보기] 타임존 관련 설정 문제

0

1556

1

[보기모드 변경 구현] 코멘트 리스트 조회 후 문제

0

448

2

[인증 구현 - 컴포넌트] error 처리 관련 질문

0

392

1

[인증 구현 - store] setAuth 메소드 구현

0

355

1

[스토어 배치] 강의 내용 중 수정이 필요한 부분

0

344

1

[라우터 설정] 강의 내용 중 수정이 필요한 부분

0

576

1

아래와 같은 에러가 발생합니다. ㅜㅜ

0

1245

2