我有一个graphql-java实现和一个架构定义。 是否可以在GraphQL查询中创建一个GraphQLList(SomeGraphQLObjectType)类型的字段,并在Relay.QL {}声明片段中使用它,这样我就可以收到所需对象的列表?这是继电器“连接”工作的地方吗?
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')}
}
}`
}
});
答案 0 :(得分:2)
是否可以创建一个类型的字段 GraphQL查询中的 GraphQLList(SomeGraphQLObjectType)并在其中使用它 Relay.QL {}声明片段?
是的,可以在@relay(plural: true)
指令的帮助下完成。它告诉Relay这个字段是一个列表,而不是单个项目。
定义这样的字段,其中Item
是具有相同name
的GraphQLObjectType:
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')}
}
`,
},
});
和这样的子容器:
export default Relay.createContainer(ChildComponent, {
fragments: {
item: () => Relay.QL`
fragment on Item {
id,
name,
color {
id,
name,
}
}
`,
},
});
您可以通过Clay Allsopp在this article中了解有关Relay指令的更多信息。
你可以看一下similar question。
这是继电器“连接”工作的地方吗?
这取决于。如果您不想一次拍摄所有物品,那么连接就是您的选择。它可以递增地获取数据。