2017-09-23 7 views
0

私はreact-apolloを使用してウェブアプリケーションのgraphqlにアクセスしています。反応アポロのオプションフィルタパラメータのモデリング

私は私がゲームのスケジュールをフィルタリングすることができ、このようになります問い合わせてきた:startDateendDate変数はリクエストごとに

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 
} 

必要とされますが、teamIddivisionIdはありません。最初のリクエストですべてteamIdsdivisionIdsを表示し、必要に応じてフィルタリング/ドリルダウンを許可します。

ワイルドカード(*)などを追加できるかどうかを確認していましたが、可能かどうかはわかりません。 graphqlの突然変異では、変数の値がnullであるため、複数のユースケース(部分的な更新&が作成されます)に適用できる単一の突然変異を書くことができますが、クエリで同様の機能を達成する方法を理解できません。

私は役立つだろうfragments何かありますか?フィルターのシナリオ(なしdivisionId & teamIdに1つだけdivisionIdに1つだけteamIdに1つ、およびdivisionIdteamIdの両方に1つごとに異なるクエリを呼び出す必要があります(最後の文は、プロセスがDRY /少しも面倒ではない思われてしまうので)私はより少ないオーバーヘッドでこれを実現しています。

または私はすべてと(やや大)アレイdivision_indivisionidを切り替えid_inと渡すかをdivisionIdsとの可能な値最初の小道具として?

答えて

1

実際には、フィルタ全体を変数として保存していることが分かります(かなり素晴らしい)。ここで

が更新クエリです:

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

と、対応するHOC:これらの人へ

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

帽子のヒント:

関連する問題