const formattedPosts = [];
for (const post of posts) {
const like = await prisma.likes.count({
where: {
post_Id: post.id,
},
});
formattedPosts.push({
id: post.id,
title: post.title,
nickname: post.user.userInfos.nickname,
content: post.content,
imageURL: post.imageURL,
category: post.category,
createdAt: post.createdAt,
like: like,
});
}
nickname과 like과 같은 선상에서 조회되도록 빈 배열을 만들어 주었고,
여러개의 게시글을 조회하여야하니 for of 문을 사용해 조회한다.
Likes
테이블에서 post_Id를 카운팅하여 like에 담아준 뒤, 배열에 넣어준다.
const like = await prisma.likes.count({
where: { post_Id: +id },
});
// 코드
const formattedPost = {
id: post.id,
title: post.title,
nickname: post.user.userInfos.nickname,
content: post.content,
imageURL: post.imageURL,
category: post.category,
createdAt: post.createdAt,
like: like,
};
조회와 로직은 비슷하나 상세 조회이기 때문에 for문 사용을 하지 않고 객체를 할당해준다.
const posts = await prisma.posts.findMany({
where: { category: category },
include: {
likes: true,
},
});
// 좋아요 수 체크 후 삭제
for (const post of posts) {
post.like = post.likes.length;
delete post.likes;
}
쿼리 매개변수로 담아준 카테고리에서 likes를 추가하여 준 뒤,
조회와 마찬가지로 여러 게시글 조회이기 때문에 for of를 사용했다.
메모리에 부담을 주지 않기 위해 delete까쥐.
게시글 조회 시 좋아요 수는 따로 가져오지 않고 post를 select할 때 counting할 수 있습니다! 한번 시도해보세요!