Naar de inhoud

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.

GraphQL Schema

Fragment Matcher

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

  1. Plak een schema dat interface- of samenvoegdefinities bevat in de GraphQL Schema-editor.
  2. Lees het gegenereerde possibleTypes-object; typen die geen deel uitmaken van een interface of unie verschijnen niet.
  3. 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 result

Details 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 }).

Specificaties en referenties