장소 페이지에 리뷰를 전부 보여주고 있고
각 리뷰카드에 해당 리뷰에 달린 좋아요 & 댓글 개수 추가를 해야하는데
데이터들이 각각의 테이블에 흩어져 있는 상태였다
필요한 정보 = 리뷰정보(reviews) + 유저정보(users) + 좋아요개수(likes) + 댓글 개수(comments)
이걸 어떻게 가져오지? 에서 부터 대혼란
각각의 테이블과 서버통신하여 가져온 데이터들을
하나로 합치는 작업을 거쳐 뿌려주기
이렇게 하려면 결과물을 배열로 받아서 화면에 뿌려줘야하는데
비동기 코드들이 많아서 await이 계속 중첩되고
결과가 계속 Promise로 반환되어 배열로 만들 수가 없었다
Promise.all 까지 도입했으나 결국 실패
(분명 방법이 있었겠지만 실력부족으로 실패 🥺)
supabase 테이블에 연결된 참조테이블을 조합해서 가져오기
💡 아래와 같이 하니까 reviews 테이블에 있는 place_id를 기준으로
review 정보들과 place_id와 연결되어 있는 likes, comments 테이블의 정보들,
users 테이블의 user_name을 한번에 가져올 수 있었음!
export const getLikesWithCommentsByPlaceId = async (placeId: string) => {
const { data, error } = await supabase
.from('reviews')
.select(
`
*,
likes(*),
comments(*),
users (
user_name
)
`,
)
.eq('place_id', placeId);
if (error) {
throw error;
}
return data;
};
적용안함
line-clamp-1
line-clamp-4