2017-05-19 1 views
0

aggregate 필터를 사용하는 쿼리를 생성하는 데 graphql을 사용할 수 있는지 알고 싶습니다. 예를 들어 having max(customers) < 10graphql은 집계에 대한 필터를 지원합니까?

같은 뭔가 (I 지정하려는 필터 기준은 하나의 기준으로 간주하십시오) :

query { 
    allMovies { 
    title 
    _actorsMeta { 
     count 
    } 
    } 
    _allMoviesMeta(filter: { 
    title_starts_with: "Inception" 
    ***count : > 5*** 
    }) { 
    count 
    } 
} 
+0

graphql 서버에 무엇을 사용하고 있습니까? 제삼자 API인가요? –

+0

Apollo 클라이언트를 사용하려고합니다. –

답변

1

GraphQL은 사양 수준에이 을 지원하지 않습니다. 그리고 왜 좋은 이유가 있습니다. GraphQL 사양이 필터 및 집계를 지원하면 모든 사용자가이 기능을 구현해야하며 일부 도메인/사용 사례의 경우 매우 비효율적이거나 필요하지 않을 수 있습니다. 사용자가 필요하지 않은 경우 어 그리 게이션을 구현/지원해야하는 이유는 무엇입니까?

그러나 GraphQL은 유연성을 제공하므로 매개 변수를 통해 필드에 대한 필터링/집계를 구현할 수 있습니다. 귀하의 예제를 보니 다음과 같이 보일 수 있습니다 :

query { 
    allMovies { 
    title 
    _actorsMeta { 
     count 
    } 
    } 
    _allMoviesMeta(filter: { 
    title: {startsWith: “Inception”}, 
    count: { gt: 5 } 
    }) { 
    count 
    } 
} 

그러나 백 엔드에 모든 필터링 논리를 구현해야합니다. 좋은 설명은 @batjko에 의해 the similar question에 게시됩니다.

모든 GraphQL 쿼리는 resolve() 함수에 의해 응답됩니다. 쿼리에 제공하는 쿼리 매개 변수는이 함수에 대한 인수입니다. 그런 다음 resolve() 함수가 사라지고 원하는 모든 작업을 수행합니다. 예를 들어 은 다른 곳에서 SQL 쿼리 결과를 검색 한 다음 데이터를 원하는대로 집계하고 마지막으로 결과를 모두 으로 반환 할 수 있습니다 GraphQL 쿼리에.

백엔드를 제어하지 않는 경우 프런트 엔드에서 필터링/집계를 수행 할 수 있습니다. 나는 결과 변환을 지정하는 선언적 방법을 제공하는 graphql-lodash의 저자 중 한 사람입니다. 당신처럼 보일 수 있습니다 조회 : Query and transformation collocation in Apollo Client : 당신이 Appollo 클라이언트, 그것을 함께 사용하는 방법에 대한 문서를 확인 사용하는 경우

query { 
    allMovies { 
    title 
    _actorsMeta { 
     count 
    } 
    } 
    _allMoviesMeta @_(
    rejectIf: { 
     and: [ 
     { get: “сount”, gt: 5 } 
     { get: “title”, startsWith: “Inception” } 
     ] 
    } 
) { 
    title 
    count 
    } 
} 

. ReactAngular 예제가 포함되어 있습니다. 배터리 :.

의견이나 제안을 보내 주셔서 감사합니다. GitHub repository에서 문제를 열어주세요.

관련 문제