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 asedges
,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
- a
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