如何为 GraphQLObjectType 的 GraphQLList 定义 Relay 片段?

Posted

技术标签:

【中文标题】如何为 GraphQLObjectType 的 GraphQLList 定义 Relay 片段?【英文标题】:How to define Relay fragment for GraphQLList of GraphQLObjectType? 【发布时间】:2017-04-30 00:48:12 【问题描述】:

我已经定义了一个 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')
       
    `
  
);

【问题讨论】:

【参考方案1】:

是否可以创建类型的字段 GraphQLList(SomeGraphQLObjectType) 在 GraphQL 查询中并在 Relay.QL 声明片段?

是的,这可以在@relay(plural: true) 指令的帮助下实现。它告诉 Relay 这个字段是一个列表,而不是单个项目。

像这样定义字段,其中Item 是具有相同name 的GraphQLObjectType:

itemList: 
  type: new GraphQLList(Item),
  // other stuff including resolve function
,

由于您已将 Relay 容器分为父容器和子容器,因此请像这样定义父容器:

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 中了解有关中继指令的更多信息。

还有一个similar question,你也可以看看。

这是中继“连接”工作的地方吗?

这取决于。如果您不希望一次性完成所有项目,那么连接是您的最佳选择。它支持增量获取数据。

【讨论】:

感谢您快速而有根据的回复!在我使用它之后,我想我应该在查询中考虑 Viewer 根类型,这可能会使 ParentComponent 获取项目列表

以上是关于如何为 GraphQLObjectType 的 GraphQLList 定义 Relay 片段?的主要内容,如果未能解决你的问题,请参考以下文章

订阅的 GraphQLObjectType

如何为 Fedora 安装 g++?

如何为 SMTP 配置 Django 和 G Suite

如何为 GTK3 配置 VSCode 以进行智能感知/构建/调试和 g++

XBee 802.15.4/Digimesh FAQs:如何为2.4G模块选择合适的信道

如何为 Seaborn Facet Plot 添加标题