0

私のプロジェクトでは、段階的開示 (ユーザーが権限を持っている場合に UI データの一部を表示する) を実装する予定です。基本的にreact + apollo client with hooks + graphqltagを使っています。

しかし問題は、UI の一部を非表示にする方法ではなく、権限によってクエリを分割する方法です。そのため、現在、ページについては、さまざまな種類のデータに対して多くの「サブクエリ」を含む単一のクエリを作成しています。例えば ​​:

export const GET_DATA_X= gql`
  query getDataX(
    $applicationId: ID!
    $dateFrom: String!
    $dateTo: String!
    $displayMode: String!
  ) {
    applicationShipDates(
      applicationId: $applicationId
      dateFrom: $dateFrom
      dateTo: $dateTo
      displayMode: $displayMode
    ) {
      periodStartDate
      dates
    }
    graphStatistics(
      applicationId: $applicationId
      dateFrom: $dateFrom
      dateTo: $dateTo
    ) {
      totalVisits
      totalConversions
      conversionRate
    }
  }
`;

そして今、ユーザーが許可を持っていれば、このクエリの各部分が利用可能になります。バックエンド側では、すでに処理されています。null/空の配列とエラーをスローします。しかし、IMO では、データのこの部分を求めることさえすべきではありません。そして、それが問題です。これを apollo クライアントで行う方法について何か提案はありますか?

現在、それを行う方法について2つのアイデアがあります。

  1. クエリを 1 つに分割し、ユーザーが権限を持っている場合はいくつかの API 呼び出しを行い、そうでない場合はスキップします
  2. クエリ定義とクエリに必要なアクセス許可を含む、オブジェクトの prop 配列として渡すカスタム関数を作成します。この配列を許可によってフィルタリングし、次のような小さなクエリ定義から、applicationShipDatesまたはいくつかの「サブクエリ」を含むgraphStatistics大きなクエリを作成しますgetDataX
4

1 に答える 1