This message was deleted.
# 질문
s
This message was deleted.
b
스키마가 다음과 같을 때
Copy code
type Book {
 name : String
}

type User {
 books : [Book]
}

type Place {
  owner: User
}

type query {
 user(id:ID):User
 place(id:ID):Place
}
Copy code
{
 user(id:"1") {   // <- user api를 호출해서 {books : [{id:1, name:'1번 책', report: true}, {id:2, name:'2번 책', report : false}]}
  books { // <- book.report 값이 true 인 것만 보여줘야 함
    name
  }
 }
}

{
 place(id:"1") { // 장소 api 호출해서 user 정보 획득
  owner { // <- user api를 호출해서 {books : [{id:1, name:'1번 책', report: true}, {id:2, name:'2번 책', report : false}]}
   books { // <- book.report 값이 true 인 것만 보여줘야 함
     name
  }
 }
}
report
값은 클라이언트 입장에서 필요 없기 때문에 스키마에 넣지 않았을 경우입니다.
1.
user
필드 리졸버와
owner
필드 리졸버에서
report
값을 통해
books
정보를 필터링해서 리턴 2.
User
타입의
books
필드 리졸버에서 유저 조회 api를 호출해서
report
값을 획득 후 필터링해서 리턴 3.
report
를 스키마에 추가 후
Parent
타입에서 접근, 없으면 api 호출 위 세 가지 방법이 있는 것 같은데 graphql 릴레이션 관점에서는 2번이 더 맞아보여서요… 다들 어떠신가요?
아니면 스키마가 잘못 디자인 된걸까요?
x
저는 주로 2번으로 작성하고, 이걸 위해서 Lazy 캐싱으로 DataLoader 호출을 감싼 내부 필드를 가진 클래스를 만들어서 써요
👍 1
❤️ 1