ToDo

  • [] 좋아요 에러
  • [] 업로드시 post밀림 현상
  • [] 사진 앨범 선택
  • [] 프로필 사진 세로 배치
  • [] notification
  • [] message
  • [] explorer

backend 수정

import { prisma } from '../../../generated/prisma-client';

export default {
    Post: {
        isLiked: async (parent, __, { request }) => {
            const { id: parentId } = parent;
            const { user } = request;
            console.log(parentId, user);
            const result = await prisma.$exists.like({
                AND: [
                    {
                        user: {
                            id: user.id
                        }
                    },
                    {
                        post: {
                            id: parentId
                        }
                    }
                ]
            });
            console.log(result);
            return result;
        },
        likeCount: async (parent, _, __) =>
            await prisma
                .likesConnection({ where: { post: { id: parent.id } } })
                .aggregate()
                .count(),

        commentCount: async (parent, _, __) =>
            await prisma
                .commentsConnection({ where: { post: { id: parent.id } } })
                .aggregate()
                .count(),
        files: parent => prisma.post({ id: parent.id }).files(),
        comments: parent => prisma.post({ id: parent.id }).comments(),
        user: parent => prisma.post({ id: parent.id }).user(),
        Likes: parent => prisma.post({ id: parent.id }).Likes()
    }
};

기존에는 post에 postid와 좋아요 리스트 중에 사용자의 id가 있는지 확인하는 방식이었는데, 이게 제대로 동작을 하지 않아서 아래와 같이 like객체 중에 useridpostId가 일치하는 것이 있으면 true를 리턴해주는 방식을 사용했습니다.

Post.js

prisma.$exists.like({
                AND: [
                    {
                        user: {
                            id: user.id
                        }
                    },
                    {
                        post: {
                            id: parentId
                        }
                    }
                ]
            });