2017-10-13 27 views
1

apollo-server 용 API를 사용하여 외부 키를 선택적으로 확인할 수있는 기능을 사용하기 위해 Grapholo 해석기를 구조화하는 것이 가장 좋은 방법인지 궁금합니다 (JSON API의 includes과 유사). 예를 들어, 매개 변수를 추가하여 의견이 게시물에 포함 할 수 요청할 수 있습니다GraphQL 해결 프로그램에서 JSON API 포함을 사용하려면 어떻게해야합니까?

GET /articles/1?include=comments HTTP/1.1 

그러나, 기록 (들)에 대한 요청이 articles 해결의 수준에서 이루어진다. 어떻게 든 그 아래 필드에 액세스 할 수 있습니까? comments 해석자가 어떻게 든 부모에 영향을 줍니까?

graphql.org에 이 있는데이 문제를 해결하기 위해 설계된 pull request을 참조합니다. 이후 작성자가이를 포기했습니다. 내가 취할 수있는 다른 접근법은 무엇입니까? 이것이 근본적으로 현재 사양의 한계입니까? 수평선에 도움이 될만한 다른 변화가 있습니까?

흥미로운 사용 사례 :의

답변

1

귀하의 질의는 하향식 (top-down) 방식으로 해결되기 때문에 articles에 대한 해결이 comments에 대한 해결 전에 호출됩니다

- 당신이 comments 해결 안에 할 방법이 아무것도 없다 articles 해결자가 수행하는 작업에 영향을 줄 수 있습니다.

그러나 각 해결 자에는 (1) 부모 필드에서 확인 된 객체, (2) 필드의 인수, (3) 컨텍스트 및 (4) GraphQLResolveInfo 객체라는 네 개의 인수가 전달됩니다. 이 마지막 명령은 서버에 제출 된 쿼리에 대한 정보를 포함합니다.

query ArticlesQuery { 
    articles { 
    comments { 
     text 
    } 
    } 
} 

정보 객체는 다음과 같이 보일 것입니다 : 예를 들어

,의는이 같은 쿼리를 가지고 가정 해 봅시다

{ 
    "fieldNodes": [ 
    "name": { 
     "value": "articles" 
    }, 
    selectionSet: [ 
     "name": { 
     "value": "comments" 
     }, 
     selectionSet: [ 
     "name": { 
      "value": "text" 
     } 
     ] 
    ] 
    [ 
} 

내가 다른 필드의 숫자를 생략 한,하지만 당신은 당신의 쿼리 문서처럼 객체가 어떻게 중첩되어 있는지를 볼 수 있습니다. 이를 통해 실제로 반복되는 필드를 확인할 수 있습니다. 그런 다음 API 호출을 적절하게 수정할 수 있습니다.

더 쉽게 개체를 구문 분석하는 데 도움이되는 like this one 도구가 있습니다.