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 (no- edgewrapper) useful if you don't need the cursor for every entry and want a simple data structure
- PageInfo.startCursorand- PageInfo.endCursor- useful for pagination if you use- nodes { ... }rather than- edges { 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.