prisma db에 정의된 필드가 아닌 서버 내부적으로 사용하기 위한 필드
(조합하거나, 다른 필드에 의해 도출되거나)
# 🗂models.graphql
type User{
...
firstName: String
lastName: String
fullName: String <- Computed field
...
}
resolver 만들 시에 parameter중에 첫번째 parameter에 해당하는 항목이 parent에 해당한다.
resolver에서 parent는 무엇을 지칭하는가?
해당 resolver를 호출한 resolver를 가리킨다.
query {
me {
user {
fullName
}
}
}
query {
seeUser(id:"...") {
user {
fullName
}
}
}
Query: {
seeUser: async (_, args) => {
const { id } = args;
const user = await prisma.user({ id });
const posts = await prisma.user({ id }).posts();
return {
user,
posts,
};
},
},
// ✅ add User resolver
User: {
fullName: (parent) => {
return `${parent.firstName} ${parent.lastName}`;
},
},
User
resolver를 추가했다. fullName
항목은 prisma 필드로 등록되어 있지 않기 때문에 prisma에서는 가져올 수 없다.(computed field)User
가 type 등록되어있고 fullName
resolver를 통해 User
resolver에 fullName
필드를 반환하기 때문에 여기서 값을 가져오게 된다.fullName
을 가져올 수 있는게 맞다. 그런데 me로 했을 시에도 잘 나온다?schema.js
에 하나로 합쳐서 export하기 때문에 바라볼 수 있는 구조가 된다.