2017-11-28 4 views
1

나는 type User이 있습니다. 사용자는 type TeamMember 일 수도 있습니다. UserTeamMember의 유일한 차이점은 추가 된 필드 teamRole: String입니다. 그래서, 난 ... 중복 사용자의 모든 필드를 정의하는 것을 방지하기 위해 다음과 같은 것을 할이에 대한 구문을 인식GraphQL에서 typeDefs 상속 또는 확장 방법

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

    type TeamMember extends User { 
    teamRole: String, 
    } 

사람을 사랑하는 것? 나는 extend이 해답이 될 것이라고 생각하지만, 더 많은 것 같아 자바 스크립트의 prototype

답변

1

extend 당신이 기본 스키마를 가지고 있고 그것을 기반으로 두 개 이상의 사용할 스키마를 구축하려는 경우에 적합합니다. 예를 들어 모든 스키마에서 쿼리를 공유하는 루트 Query 유형을 정의한 다음 각 스키마 내에서이를 확장하여 해당 스키마에 특정한 쿼리를 추가 할 수 있습니다. 새로운 유형을 만드는 대신 기존 유형에 기능을 추가하는 메커니즘입니다.

GraphQL은 본질적으로 상속을 지원하지 않습니다. 그러나 GraphQL-JS를 사용하는 경우이 기능을 추가하는 라이브러리가 있습니다. 링크 here. 제네릭 형식과 형식이 다른 형식을 상속하는 방법을 모두 추가합니다.

+0

고마워요! 이것은 내가 찾고 있었던 바로 그 것이다. 글쎄, 이상적으로 나는 다른 패키지를 필요로하지 않을 것이기 때문에 ['graphql-s2s'] (https://github.com/nicolasdao/graphql-s2s)는 필자에게 필요한 것을 제공한다. 내 서버로 ['graphql-yoga'] (https://github.com/graphcool/graphql-yoga/)를 사용하고 있기 때문에, 나는''자신의 typeDefs를 원숭이 패치 (https : // github. co.kr/graphcool/graphql-yoga/blob/master/src/index.ts # L48) 선언을 사용하는 것이 좋습니다. 당신이 더 좋은 방법을 안다면 나는 모든 귀입니다. 감사! –