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

时间:2018-01-04 17:47:30

标签: reactjs graphql relayjs graphql-js

我在reactjs中编写一个UI应用程序,并希望使用graphql获取数据。我正在使用Relay。但是,我在Relay.createContainer中构建的graphql查询正在添加额外的" id"领域。在relay / graphql中是否有一种方法可以排除这些不必要的字段,并且只包括在创建时在查询中给出的内容。以下是代码段: 在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
                        }
                      }
                    }
                  }
                }
              }
            }`;
          }
      }
  });

查询正在发送的内容: {"查询":"查询etp_ptp {enterprise { id ,... F0}}片段F0 on Enterprise {etpInfo {erInfo { paymentsEEVLi :付款(第一次:20){edge {node {enterprise {id,__ typename},id,__ typename},cursor},pageInfo {hasNextPage,hasPreviousPage}}} }, ID }""变量":{}}

预计会发送查询: {"查询":"查询etp_ptp {enterprise {... F0}}片段F0 on Enterprise {etpInfo {erInfo {payments(first:20){edges {node {enterprise {id,__ typename },id,__ typename},cursor},pageInfo {hasNextPage,hasPreviousPage}}}}}","变量":{}}

1 个答案:

答案 0 :(得分:0)

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