如何避免在 Relay.createcontainer 内置的 graphql 查询中添加额外的字段?

Posted

技术标签:

【中文标题】如何避免在 Relay.createcontainer 内置的 graphql 查询中添加额外的字段?【英文标题】:How to avoid adding extra fields in graphql query built in Relay.createcontainer? 【发布时间】:2018-06-14 12:16:50 【问题描述】:

我正在用 reactjs 编写一个 UI 应用程序,并希望使用 graphql 获取要呈现的数据。我正在使用中继。但是,我在 Relay.createContainer 中构建的 graphql 查询添加了额外的“id”字段。在中继/graphql 中有没有办法排除这些不必要的字段,并且只包括创建时查询中给出的内容。下面是代码sn-p: 在 RelayRoute.jsx::

TPRelayRoute.queries = 
    enterprise: () => 
        return Relay.QL`
          query etp_ptp
            enterprise
          `;
    
;

在 UITable.jsx::

export default Relay.createContainer(UITable, 
      initialVariables: 
          count: 20
      ,
      fragments: 
          enterprise: () => 
                return Relay.QL`
            fragment etp on Enterprise 
              etpInfo
                erInfo
                  payments(first:$count)
                    edges
                      node
                        enterprise
                          id
                        
                      
                    
                  
                
              
            `;
          
      
  );

正在发送的查询: "query":"query etp_ptp enterprise id,...F0 Fragment F0 on Enterprise etpInfo erInfo paymentsEEVLi:payments(first:20) edges node enterpriseid,__typename,id,__typename,cursor,pageInfo hasNextPage,hasPreviousPage, id","变量":

预期发送的查询: "query":"query etp_ptp enterprise ...F0 Fragment F0 on Enterprise etpInfo erInfo payments(first:20) edges node enterpriseid,__typename,id,__typename,cursor ,pageInfo hasNextPage,hasPreviousPage","变量":

【问题讨论】:

【参考方案1】:

Relay 需要一个(全球唯一的!)ID 字段才能区分其本地存储中的记录。如果后端无法提供此功能,则 Relay 将无法正常运行。

【讨论】:

以上是关于如何避免在 Relay.createcontainer 内置的 graphql 查询中添加额外的字段?的主要内容,如果未能解决你的问题,请参考以下文章

VBA如何在使用许多整数时避免递归

如何避免 Touches 取消事件?

在“点击,点击”事件触发两次。如何避免?

如何避免在散点图中重叠文本?

如何避免在Reactjs中每次都调用API?

如何避免codeigniter中的sql注入