[解決済み] GraphQLにおける "edge "と "node "の意味は何ですか?
2022-05-09 20:59:53
質問
特定のGraphQLエンドポイントを消費していますが、クエリーとしてきれいなJSON構造を供給しているにもかかわらず、結果を取得すると、"edges" および node"タグを使用しています。これは、明らかな利点もなく、私のデータを汚染しているように思われます。なぜこのようなものがあるのでしょうか?また、より速く、よりシンプルなデータ解析のために、これらを取り除くことは可能なのでしょうか?
解決方法は?
まずは簡単な言葉で紹介します。
GraphQl Relayの仕様
- オブジェクトのリフェッチ機構
- コネクションのページング方法に関する記述
- 変異を予測可能にするための構造
コネクション
-
コネクションは、メタデータを持つオブジェクトの集合体です。
など
edges
,pageInfo
... -
pageInfoには
hasNextPage
,hasPreviousPage
,startCursor
,endCursor
-
hasNextPage
は、さらに利用可能なエッジがあるかどうか、あるいはこの接続の終端に達したかどうかを教えてくれます。
-
-
レコードの配列: edges
- edgesは、あなたのデータ(node)を柔軟に使用することを可能にします。
-
エッジは、ページネーションに役立ちます。
GraphQLList
しかし、ページネーションなどの機能はなく、オブジェクトの配列 (データ) を扱うだけです。
-
各エッジは
-
a
node
レコードまたはデータ -
a
cursor
: ページ処理で中継するために base64 でエンコードされた文字列です。
-
a
https://facebook.github.io/relay/graphql/connections.htm
ノードです。
-
リレーを使用して、表示するノード数を設定できます。
connectionArgs(first, last, after, before)
リレーパジネーションは以下のように動作します。
-
コレクション内のすべてのオブジェクトを取得して
first/last
xレコード、connectionArgsを通して使用 -
after/before
は、ノードからカーソルを使って必要なスライス(データ)の数をGraphQLサーバーに示すために使用します。
などなど、他にもいろいろあります。
nodeDefinitions
,
globalFieldId
,
nodeInterfaces
https://github.com/graphql/graphql-relay-js#object-identification
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン