2017-11-17 4 views
1

는 사용자가 특정 행동을했다하는 친구 요청할 수 있습니다 :캐시 중첩 된 결과

query($id: Int) { 
    post(id: $id) { 
    likes { 
     id 
     name 
     photo 
    } 
    } 
} 

을하지만 그것은 다시 가져 오는 다른 게시물에 대한 동일한 개체에 대한 ID, 이름 및 사진 데이터를 (이후 의미 서버는 이미 내가 무엇을 캐시했는지 알지 못한다.) 여기서 캐시를 활용하려고 시도 할 수있는 전략은 무엇입니까?

내가 생각할 수있는 유일한 것은 위의 쿼리에서 ID 필드를 요청하고 이름과 사진에 대한 별도의 쿼리를 가지고이를 일괄 처리하려고합니다.

답변

0

반환 된 동일한 결과 개체 그래프의 개체를 공유하기 위해 GraphQL에 기본 제공 방법이 없습니다. 당신은 실제로 당신 자신의 질문에 대답했습니다. ID를 사용하여 결과 그래프를 정규화하면 클라이언트로 전송할 JSON 양이 줄어 듭니다. 그러나 클라이언트가 다른 방식으로 데이터를 요청해야합니다. 예 :

query($id: Int) { 
    post(id: $id) { 
    likes { 
     id 
    } 
    } 
    likesByPostId(postId: $id) { 
    id 
    name 
    photo 
    } 
} 

GraphQL에서는 클라이언트가 데이터 가져 오기를 최적화하는 방법을 결정하도록했습니다. 서버는 클라이언트가 요청한 모양의 데이터 만 반환합니다. 따라서 고객을 결정할 수는 없습니다.