Connections
When a GraphQL field is expected to return a large list of database records, we typically implement a connection adhering to the Relay Cursor Connections Specification (with a few enhancements). This connection allows you to perform cursor-based pagination with ease, and is seen as a GraphQL best practice.
The enhancements that we apply on top of Relay's connection spec include:
totalCount
- the total number of records matching the query (excluding cursor/limit/offset constraints)nodes
- just the nodes (noedge
wrapper) useful if you don't need the cursor for every entry and want a simple data structurePageInfo.startCursor
andPageInfo.endCursor
- useful for pagination if you usenodes { ... }
rather thanedges { cursor, node { ... } }
Many connections (specifically those coming from tables, views and relations) support filtering the return results with a conditon.
Advice
If you prefer a simpler list interface over GraphQL connections then you can
enable that either along-side our connections (both
) or exclusively (only
)
using our --simple-collections [omit|both|only]
option.