Key Fields
In order to know which fields identify individual resources in your schema Stellate needs to know which field holds the unique identifier for a certain node type. This is mainly used for purging changed results from the cache, either via automatic cache invalidation or the Purging API
By default, Stellate looks for id
, _id
and key
fields on your types. However, sometimes you have other unique fields (like e.g. User.email
) that you want to use for this purpose.
To tell the Stellate Edge Cache that email
is a field that uniquely identifies resources, Key Fields can be defined in the Stellate configuration file.
The keyFields field can be used like so:
import { Config } from 'stellate'
const config: Config = {
config: {
keyFields: {
types: {
NewsLetterSubscriber: ['id', 'email'],
},
},
},
}
export default config
These key fields are then immediately exposed and purgeable via the purging API:
# Purge newsletter subscriber with the email max@stellate.co
mutation {
purgeNewsletterSubscriber(email: ["max@stellate.co"])
}
For more information about cache purging and the purging API read the documentation on the Purging API.
Changing default key-fields
By default we'll check for keys at id
, _id
and key
on your responses, however sometimes you might need
to change this when you use something along the lines of idx
, if that's the case you can add the following
config
import { Config } from 'stellate'
const config: Config = {
config: {
keyFields: {
defaults: ['idx', 'id', '_id', 'key'],
types: {}
},
},
}
export default config
this will add your own custom identifier to the surrogate-keys.