2016-12-14 4 views
0

나는 graphql-java 구현과 스키마를 정의했다. GraphQL 쿼리에서 GraphQLList (SomeGraphQLObjectType) 유형의 필드를 생성하고 Relay.QL {} 선언 조각에서 사용할 수 있습니까? 그러면 원하는 개체의 목록을받을 수 있습니까? 이 곳이 계전기 연결이 작동하는 곳입니까?GraphQLObjectType의 GraphQLList에 대한 릴레이 조각을 정의하는 방법은 무엇입니까?

export default Relay.createContainer(ChildComponent, { 
    fragments: { 
    item:() => Relay.QL` 
     fragment on Item 
     { 
     id, 
     name, 
     color{ 
      id, 
      name 
     } 
     }` 
    }}); 


export default Relay.createContainer(ParentComponent, { 
    fragments: { 
    list:() => Relay.QL` 
    fragment on ListOfItems{ 
     allItems 
     { 
     ${ChildComponent.getFragment('item')} 
     } 
    }` 
    } 
}); 

답변

2

그것은 GraphQL 쿼리 유형 GraphQLList (SomeGraphQLObjectType)의 필드를 생성하고이 Relay.QL {} 선언 단편에 사용하는 것이 가능하다?

예, @relay(plural: true) 지시어를 사용하여 가능합니다. Relay에게이 필드가 단일 항목 대신 목록임을 알려줍니다.

당신은 부모와 자녀로 릴레이 컨테이너를 분리했기 때문에
itemList: { 
    type: new GraphQLList(Item), 
    // other stuff including resolve function 
}, 

는이 같은 부모 컨테이너를 정의 :

export default Relay.createContainer(ParentComponent, { 
    fragments: { 
    itemList:() => Relay.QL` 
     fragment on Item @relay(plural:true) { 
     ${ChildComponent.getFragment('item')} 
     } 
    `, 
    }, 
}); 

이 같은 필드를 정의는, 같은 name와 GraphQLObjectType 곳 Item입니다 이 같은

와 자식 컨테이너 :

export default Relay.createContainer(ChildComponent, { 
    fragments: { 
    item:() => Relay.QL` 
     fragment on Item { 
     id, 
     name, 
     color { 
      id, 
      name, 
     } 
     } 
    `, 
    }, 
}); 

릴레이 지시문에 대한 자세한 내용은 this article (Clay Allsopp)을 참조하십시오.

similar question도 있습니다.

여기가 "연결"릴레이가 작동하는 장소입니까?

에 달려 있습니다. 한 번에 모든 항목을 원하지 않으면 연결이 필요합니다. 데이터를 점진적으로 가져올 수 있습니다.

+0

신속하고 근거가있는 답변에 감사드립니다. 이 쿼리를 사용하면 ParentComponent에서 항목 목록을 가져올 수있는 뷰어 루트 유형을 내 쿼리에서 고려해야한다고 생각합니다. – elenaHristova