Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

In GraphQL what's the meaning of "edges" and "node"?

Tags:

graphql

People also ask

What are fields in GraphQL?

A field is essentially an object-specific attribute that holds a value. The object's parent type defines which fields an object must have. Each field is set at definition to hold certain data types, such as String or Enum .

What does graph mean in GraphQL?

What is a Graph? A long time before GraphQL there where graphs, but what are they exactly? Graphs are data structures that resemble the natural way we build mental models and relate concepts. In graphs, relationships between represented entities are as relevant as the entities themselves.\

What is a GraphQL fragment?

A GraphQL fragment is a reusable unit of logic that can be shared between multiple queries and mutations.


Let's begin with a short introduction in simple words


GraphQl Relay specifications

  • mechanism for refetching an object
  • description of how to page through connections
  • structure around mutations to make them predictable

Connections:

  • a connection is a collection of objects with metadata such as edges, pageInfo...
  • pageInfo will contain hasNextPage, hasPreviousPage, startCursor, endCursor

    • hasNextPage will tell us if there are more edges available, or if we’ve reached the end of this connection.
  • The array of records: edges

    • edges will provide you flexibility to use your data(node)
    • edges will help you for the pagination, There is graphql GraphQLList but with no functionality such as pagination, only with array of objects (data)
  • Each edge has

    • a node: a record or a data
    • a cursor: base64 encoded string to help relay with pagination

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

Node:

  • you can set the number of nodes you need to show using the relay connectionArgs(first, last, after, before)

Relay Pagination works as

  • Fetches all objects in the collection and return a slice based on the first/last x records, used thru connectionArgs

  • after/before are used to indicate to the GraphQL server the number of required slice (data) using cursor from the node

There are many more things to consider like nodeDefinitions, globalFieldId, nodeInterfaces

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