2017-11-28 1 views
1

Ich habe eine type User. Benutzer können auch eine type TeamMember sein. Der einzige Unterschied zwischen einem User und TeamMember ist ein hinzugefügtes Feld teamRole: String. Also, ich würde gerne so etwas wie die folgenden tun redundant zu vermeiden, die alle Benutzerfelder definieren ...Wie TypDefs in GraphQL geerbt oder erweitert werden

type User { 
    id: ID!, 
    name: String, 
    (many other field defs) 
    } 

    type TeamMember extends User { 
    teamRole: String, 
    } 

Jeder kennt eine Syntax für das? Ich dachte extend die Antwort sein würde, aber es scheint eher wie JavaScripts prototype

Antwort

1

extend ist groß, wenn Sie ein Basisschema und wollen zwei oder mehr nutzbare Schemata darauf basierenden aufzubauen. Sie können beispielsweise einen Root-Typ Query mit Abfragen definieren, die von allen Schemas gemeinsam verwendet werden, und sie dann innerhalb jedes einzelnen Schemas erweitern, um Abfragen hinzuzufügen, die für dieses Schema spezifisch sind. Es ist als Mechanismus gedacht, um vorhandenen Typen Funktionalität hinzuzufügen, anstatt neue Typen zu erstellen.

GraphQL unterstützt nicht automatisch die Vererbung. Es gibt jedoch eine Bibliothek, die diese Funktionalität hinzufügt, wenn Sie GraphQL-JS verwenden. Link here. Es fügt sowohl generische Typen als auch eine Möglichkeit für Typen hinzu, von einem anderen Typ zu erben.

+0

Danke! Genau das habe ich gesucht. Nun, nicht genau, da ich idealerweise kein anderes Paket benötigt hätte, aber [graphql-s2s] (https://github.com/nicolasdao/graphql-s2s) gibt mir, was ich brauchte. Ich benutze ['graphql-yoga'] (https://github.com/graphcool/graphql-yoga/) als meinen Server, also musste ich [' affe patch ihre typeDefs'] (https: // github. com/graphcool/graphql-yoga/Blob/Master/src/index.ts # L48) Erklärung, die auch weniger als Idee ist. Wenn du einen besseren Weg kennst, bin ich ganz Ohr. Vielen Dank! –

Verwandte Themen