4

Relay と GraphQL を使用して、ビューアを返すスキーマと、関連付けられたドキュメントの埋め込みリストがあるとします。ルート クエリ (フラグメントで構成される) は、次のようになります。

query Root {
  viewer {
    id,
    name,
    groups {
      edges {
        node {
          id,
          name,
        }
      }
    }
  }
}

これにより、ユーザーと、それに関連付けられているすべてのグループのリストを表示できます。

ここで、ユーザーがそのリスト項目をクリックして、その特定のリスト項目に関連付けられたコメントを表示するように展開できるようにしたいとしましょう。これらのコメントを受け取ることができるように、リレー ルートのクエリをどのように再構築すればよいですか? グループ エッジにコメント エッジを追加すると、すべてのグループのコメントが取得されませんか?

query Root {
  viewer {
    id,
    name,
    groups {
      edges {
        node {
          id,
          name,
          comments {
            edges {
              node {
                id,
                content
              }
            }
          }
        }
      }
    }
  }
}

または、ルート クエリを変更して特定のグループを検索する必要がありますか?

query Root {
  group(id: "someid"){
    id,
    name,
    comments {
      edges {
        node {
          id,
          content
        }
      }
    }
  },
  viewer {
    id,
    name,
    groups {
      edges {
        node {
          id,
          name,
        }
      }
    }
  }
}

私の懸念は、特に、これを のコンテキスト内で使用することですrelay。つまり、展開されたリスト アイテム (またはアイテム) のコメントのみをフェッチするルート クエリを効率的に構築するにはどうすればよいでしょうか。また、既に存在するキャッシュされたデータを利用し、ミューテーションを行うときに更新されます。上記の例は、特定の展開されたグループに対して機能する可能性がありますが、すべてのグループ項目のフィールドをフェッチせずに複数のグループを同時に展開する方法がわかりません。

4

1 に答える 1