Instagram-clone#8-Refactoring

Seo·2020년 6월 2일
0

InastagramClone

목록 보기
8/15

Remove fragment

fragment를 사용할 때는 string query를 작성하여 호출하기 때문에 관리하기도 어렵고, 디버깅이 어려울 수 있다. 가급적 사용하지 않는 것이 좋은거 같은데 어쩔 수 없이 nested 필드 값을 조회하려면 사용해 왔었다.

좀 더 나은 방법을 사용하기 위해서 기존에 computed field를 사용했던 방식으로 refactoring 한다.
nested 필드 자체를 computed field로 정의해두고 reuse가능한 방법으로 사용하면 fragment와 동일한 결과를 볼 수 있다.

// fragment
export const FULL_POST_FRAGMENT = `
    fragment PostParts on Post{
        id
        location
        caption
        files {
            ...
        }
        comments {
            ...
        }
        user {
            ...
        }
    }
`;

// use
...
return prisma.post({id}).$fragment(FULL_POST_FRAGMENT);
...
// computed field
export default {
  Post: {
    files: (parent) => prisma.post({ id: parent.id }).files(),
    comments: (parent) => prisma.post({ id: parent.id }).comments(),
    user: (parent) => prisma.post({ id: parent.id }).user(),
    ...
  }
}
  
// use
...
return prisma.post({id});
...
profile
개발관심자

0개의 댓글