如何避免在 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 查询中添加额外的字段?的主要内容,如果未能解决你的问题,请参考以下文章