2017-11-28 7 views
1

私はtype Userを持っています。ユーザーはtype TeamMemberでもかまいません。 UserTeamMemberの唯一の違いは、追加フィールドteamRole: Stringです。だから、私は...重複ユーザーのすべてのフィールドを定義することを避けるために、次のような何かをするために、このための構文を知っGraphProでtypeDefsを継承または拡張する方法

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

    type TeamMember extends User { 
    teamRole: String, 
    } 

誰もが大好きですか!私はextendが答えだろうと思ったが、それはより多くのように思えるのjavascriptのprototype

答えて

1

extendベース・スキーマを持っており、それに基づいて、2つの以上の使用可能なスキーマを構築したい場合に最適です。たとえば、すべてのスキーマでクエリーを共有するルートQueryタイプを定義し、それを個々のスキーマ内で拡張して、そのスキーマに固有のクエリーを追加することができます。これは、新しいタイプを作成するのではなく、既存のタイプに機能を追加するためのメカニズムです。

GraphQLは本質的に継承をサポートしていません。ただし、GraphQL-JSを使用している場合は、この機能を追加するライブラリがあります。リンクhere。これは、ジェネリック型と型が別の型から継承する方法の両方を追加します。

+0

ありがとうございました!これはまさに私が探していたものです。なぜなら、理想的には私は別のパッケージを必要としないだろうからですが、 '' graphql-s2s'(https://github.com/nicolasdao/graphql-s2s)は私に必要なものを与えてくれます。私は['graphql-yoga'](https://github.com/graphcool/graphql-yoga/)を自分のサーバとして使用していますので、私は[' monkey patch their typeDefs'](https:// github。 com/graphcool/graphql-yoga/blob/master/src/index.ts#L48)の宣言であり、これも考え方よりも小さい。あなたがより良い方法を知っているなら、私はすべての耳です。ありがとう! –

関連する問題