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});
...