티스토리 뷰

안녕하세요 강정호입니다

 

오늘은 upload Resolver 개발하는 것에 대해서 포스팅 해보겠습니다.

 

upload.graphql

type Mutation {
    upload(caption: String! files: [String!]): Post!
}

Post를 create할 때 필수적인 값이 id, caption. id는 자동으로 생성이 되기 때문에 caption만 input 값으로 설정.

그리고 Post 생성시에 같이 생성할 File 객체를 위해서 String 타입의 files 배열을 input 값으로 설정.

 

Post 생성 후에는 Post를 리턴.

 

 

upload.js

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

export default {
    Mutation: {
        upload: async (_, args, { request, isAuthenticated }) =>{

            // 사용자 인증
            isAuthenticated(request);

            const { user } = request;
            const { caption, files } = args;

            const  post  = await prisma.createPost({
                caption,
                user: { 
                    connect: {
                        id: user.id
                    } 
                }
            });

            files.forEach(
                async file => {
                 await prisma.createFile({
                    url: file,
                    post: {
                        connect: {
                            id: post.id
                        }
                    }
                })
            });

            return post;


        }
    }
}

오늘의 핵심

connect : 참조 관계에 있는 테이블일 경우에 외래키를 설정해주기 위한 옵션

 

 

테스트 

Post와 File을 생성하는 upload 리졸버 호출

 

결과 조회

seeFullPost로 post, comments, likeCount, files, user 조회

 

 

댓글