2017-09-23 5 views
0

웹 응용 프로그램에서 graphql에 액세스하려면 react-apollo을 사용하고 있습니다.반응성 아폴로의 선택적 필터 매개 변수 모델링

나는 나 게임의 일정을 필터링 할 수 있습니다 다음과 같습니다 쿼리가 있습니다

query($pagination:Int!, $divisionId:ID, $teamId:ID, $startDate:DateTime!, $endDate:DateTime! 
){ 
games: allGames (
orderBy: date_ASC, 
first: $pagination, 
filter: { 
    date_gte: $startDate, 
    date_lte: $endDate, 
    division: {id: $divisionId}, 
    OR: [ 
    {homeTeam: {id: $teamId} }, 
    {awayTeam: {id: $teamId} }, 
    ] 
    } 
){ 
id 
.... more fields 
} 

startDateendDate 변수가 모든 요청에 ​​대해 필요를하지만, teamIddivisionId는 없습니다. 초기 요청에 teamIdsdivisionIds을 모두 표시하고 필요에 따라 필터/드릴 다운을 사용할 수있게하려고합니다.

내가 와일드 카드 (*) 또는 그 종류의 것을 추가 할 수 있는지보고 싶었지만 가능한지 확실하지 않았습니다. graphql 변이를 사용하면 변수에 대한 null 값을 사용하여 여러 사용 사례 (부분 업데이트 & 생성)에 적용 할 수있는 단일 변이를 작성할 수 있지만 비슷한 기능을 달성하는 방법을 찾을 수는 없습니다.

도움이 될 fragments 뭔가 있습니까? 나는 단지 divisionId의 경우, divisionId & teamId에 대한 필터 각각의 시나리오 (하나 divisionIdteamId 모두 단지 teamId 하나, 그리고 하나 하나를 다른 쿼리를 호출해야하나요 나 (마지막 문장은 프로세스가 DRY /지면서 너무 복잡하지 보일 수 있기 때문에). 적은 오버 헤드

를이를 또는 내가 division_inid_indivisionid을 전환 할 수와 함께 (약간 큰) 배열을 전달할 모든 divisionIds 및에 가능한 값 초기 소품으로?

답변

1

그래서 전체 필터를 실제로 변수로 저장합니다. (꽤 멋지군요.) 이 사람들에

export default graphql(gamesQuery, { 
    options: props => ({ 
    return { variables: {props.gameFilter} 
    }); 
})(GamesPage); 

에서 모자 팁 :

query($first:Int!, $skip:Int!, $gameFilter:GameFilter!){ 
    games: allGames (
    orderBy: date_ASC, 
    first: $first, 
    skip: $skip, 
    filter: $gameFilter 
){ 
    id 
    ... more fields 
    } 
} 

그리고 해당 HOC :