GraphQL Fragment Matcher-generator — Numio
Bouwt de possibleTypes-kaart op basis van een GraphQL-schema met behulp van @graphql-codegen/fragment-matcher. Elke interface en unie wordt vermeld met de objecttypen die deze implementeren of erbij horen, klaar voor InMemoryCache van Apollo Client.
InMemoryCache({ possibleTypes }) configureren zodat fragmenten op interfaces of unies correct overeenkomen in Apollo Client 3.
Wanneer gebruik je dit?
- InMemoryCache({ possibleTypes }) configureren zodat fragmenten op interfaces of unies correct overeenkomen in Apollo Client 3.
- Het opnieuw genereren van de possibleTypes-kaart na het toevoegen van een nieuw type aan een unie, zonder de codegen CLI uit te voeren.
Hoe werkt het
- Plak een schema dat interface- of samenvoegdefinities bevat in de GraphQL Schema-editor.
- Lees het gegenereerde possibleTypes-object; typen die geen deel uitmaken van een interface of unie verschijnen niet.
- Sla het op als een .ts-bestand en geef de standaardexport possibleTypes door aan InMemoryCache.
GraphQL-schema
interface Node {
id: ID!
}
type User implements Node {
id: ID!
name: String!
}
type Post implements Node {
id: ID!
title: String!
}
union SearchResult = User | Post
type Query {
search(term: String!): [SearchResult!]!
}possibleTypes (TypeScript)
export interface PossibleTypesResultData {
possibleTypes: {
[key: string]: string[]
}
}
const result: PossibleTypesResultData = {
possibleTypes: {
Node: ["User", "Post"],
SearchResult: ["User", "Post"],
},
}
export default resultDetails en beperkingen
Alleen het schema wordt gebruikt; deze pagina heeft geen documenteditor.
De uitvoer is TypeScript: een PossibleTypesResultData-interface, een getypte resultaatconstante en een standaardexport.
Een schema zonder interfaces of unies produceert een leeg possibleTypes-object. Het genereren wordt uitgevoerd in een Web Worker in uw browser.
FAQ
Is dit het oude IntrospectionFragmentMatcher-formaat?
Nee. De uitvoer gebruikt de possibleTypes-vorm (supertypenaam toegewezen aan een reeks subtypenamen) die wordt gebruikt door Apollo Client 3, niet het Apollo Client 2-introspectieresultaatformaat.
Hoe gebruik ik de uitvoer met Apollo Client?
Importeer de standaardexport en geef het resultaat possibleTypes door aan de nieuwe InMemoryCache({ possibleTypes }).