web-dev-qa-db-fra.com

Dans GraphQL, quelle est la signification de "bords" et "nœud"?

Je consomme un noeud final GraphQL particulier et bien que je fournisse une structure JSON propre sous forme de requête, lorsque j'obtiens les résultats, les balises "edge" et "node" sont générées. Il semble que cela pollue mes données sans aucun avantage évident. Pourquoi est-il là et est-il possible de s'en débarrasser pour une analyse plus rapide et plus simple des données?

68
Ska

Commençons par une brève introduction en termes simples


Spécifications du relais GraphQl

  • mécanisme pour récupérer un objet
  • description de la façon de parcourir des connexions
  • structure autour des mutations pour les rendre prévisibles

Connexions:

  • une connexion est un ensemble d'objets contenant des métadonnées, tels que edges, pageInfo...
  • pageInfo contiendra hasNextPage, hasPreviousPage, startCursor, endCursor

    • hasNextPage nous dira s'il y a plus d'arêtes disponibles ou si nous avons atteint la fin de cette connexion.
  • Le tableau d'enregistrements: bords

    • les bords vous donneront la possibilité d'utiliser vos données (nœud)
    • les bords vous aideront pour la pagination, Il existe graphql GraphQLList mais sans fonctionnalité telle que la pagination, uniquement avec un tableau d'objets
  • Chaque bord a

    • a node: un enregistrement ou une donnée
    • une chaîne codée cursor: base64 pour aider à relayer avec la pagination

https://facebook.github.io/relay/graphql/connections.htm

Noeud:

  • chaque nœud aura un curseur
  • vous pouvez définir le nombre de nœuds à afficher à l'aide du relais connectionArgs(first, last, after, before)

La pagination de relais fonctionne comme

  • Récupère tous les objets de la collection et retourne une tranche basée sur le first/last x enregistrements, utilisés via connectionArgs

  • after/before sont utilisés pour indiquer au serveur GraphQL le nombre de tranches (données) requises à l’aide du curseur depuis le noeud

Il y a beaucoup plus de choses à considérer comme nodeDefinitions, globalFieldId, nodeInterfaces

https://github.com/graphql/graphql-relay-js#object-identification

42
p0k8_