Node Interface¶
The Node interface is a convention first introduced by Relay, the GraphQL client
that is used and developed by Facebook. It ensures that all objects have a unique identifier across the application
and that they can be refetched individually via a standardized field on the root query type.
Slicknode also uses the Node interface to determine which types should be persisted to the database. When a type
implements the Node interface, Slicknode by default automatically creates the corresponding database table for the type
and the fields.
Definition¶
The Node interface has the following definition:
interface Node { id: ID! }
Description¶
The Node interface only has one field id of type ID!. The id of the Node is globally unique,
there cannot be two nodes with the same ID in your GraphQL API.
Usage¶
To enable the storage for a type, it needs to implement the Node interface.
type Blog_Article implements Node { id: ID! title: String }
This would create a type Blog_Article that is persisted to the database along with the fields
for the CRUD API.
Querying¶
All objects of types that implement the Node interface can be refetched via the node field on the
root query type:
query { node(id: "theglobalnodeid") { id # Use fragments of the loaded type to load specific fields ...on Blog_Article { title } } }
This can be used to refresh any persisted object in the UI.