TIL 23_07_07 (금)

jegw·2023년 7월 9일
0

TIL

목록 보기
39/77
post-custom-banner

오늘 한 일

lv4 과제

  • 좋아요 API
    • 좋아요 등록, 취소
    • 좋아요 누른 게시글 조회

후발대 강의


💻게시글 목록 조회 시 게시글의 좋아요 개수도 같이 조회하기

  • 전체 게시물을 조회한다.

  • 조회한 결과를 반복문을 돌면서 postId로 각 게시물의 좋아요 개수를 받아온다.

const posts = await Posts.findAll({
      attributes: ['postId', 'UserId', 'nickname', 'title', 'createdAt', 'updatedAt'],
      order: [['createdAt', 'DESC']],
    });
    // 좋아요 개수 조회 후 추가
    const result = posts.map(async (post) => {
      const likes = await Likes.findAll({ where: { PostId: post.postId } });
      post.dataValues.likes = likes.length;
      return post;
    });

그런데 result를 console.log로 찍어보면

이렇게 나온다.

map 메서드 내에서 async 함수를 사용했기 때문이다. map은 각각의 요소에 대하여 함수를 실행한 결과를 반환받아서 새로운 배열에 넣어 반환한다.
그런데 async는 Promise를 반환하므로 result는 Promise의 배열이 된다.

Promise가 완료되지 않았기 때문에 pending이라고 표시된다.

그래서 Promise.all로 처리해주었다.

Promise.all은 모든 프로미스가 완료된 다음에야 결과를 순서대로 배열로 반환한다.

post-custom-banner

0개의 댓글