2017-09-27 8 views
1

는 GraphQL 쿼리에 여러 인수 전달

이 바보 같은 질문의 약간있을 수 있습니다 감사합니다,하지만 난 GraphQL 함께 일하고 있어요 우선은 RDF/링크 된 데이터의 세계에서 온 한 과 많은 문제를 가지고 내가 세트를 어떻게 돌려 줄 것인지 주위에 내 머리를 쓰고. 본질적으로 내가 선택할 수있는 무언가를 원한다. (GraphQL 문서의 예제를 사용)의 목록을 id을 통해 보자. SPARQL에서 나는 VALUES 절을 사용하고, 같은 바인딩 할 것 : 나는 이런 식으로 뭔가 내가 원하는 것 무엇을 것입니다 가정 것

VALUES { <http://uri/id-1> <http://uri/id-2> <http://uri/id-3> } 

을 (의사)

{ 
    human(id: ["1", "2", "3", "4", "5"]) { 
    name 
    height 
    } 
} 

Aliases 종류 의 내가 원하는 것을 할,하지만 난 다른 이름 반환 값이 무엇인지 수동으로 사전에 지정하거나하고 싶지 - 나는 ID 목록에 합격 내 코드에서하고 싶은 말 :

[1 2 3 4 5] 

을 ... 그리고 ID 배열을 받아 들일 수 있고 위의 의사 쿼리에 따라 예측 가능한 비 스칼라 모양으로 결과를 반환하는 쿼리가 있습니다.

두 번째 것은

나는 또한에 쿼리 해결을 위해 실제로 불가능 있으리라 믿고있어 중 하나 Human 또는 [Human] - 그것은 하나 또는 다른 수 있는지? 만일 그렇다면, 나는 단지 후자를 위해 정착 할 것이다. .. 그러나 나는 내가 지금 단지 이것 위에서 지금 일반적으로 아주 혼란하다고 생각한다.

+0

예를 들어, 나는이 문제에 대해 생각하고, 그리고 내가 위로 잘라 여러 인수를 정의 할 수 있습니다 어디'Slice' 유형을 말할 정의해야 범위에 대한 가상의 목록? 그럼에도 불구하고, 그런 종류의 자원은 자원 목록을 처리하는 데있어서 최적 이하라고 느낍니다. –

+0

그리고 이상적으로는 "[1 2 3 4 5]"와 같은 문자열 입력을 피하고 싶습니다. 그래서 파싱에 대해 걱정할 필요가 없습니다. 마지막 도랑 옵션이라고 생각합니다. –

답변

2

먼저 당신은 "인간"을 추가하여 쿼리 확장해야합니다

extend type Query { 
    humans(listId: [String!]): [Human!] 
    human(id: ObjID!): Human 
} 

둘째 - 그것에 대한 해결 물품. 다음과 같이 ID의

Query: { 
    humans(root, {listId}, { Human }) { 
    return Human.fillAllByListId(listId); 
    }, 
    ... 
}, 

목록 전달 될 수있다 : pass list of IDs