在我的项目中,我们计划实现渐进式披露(如果用户有权限,则显示部分 UI 数据)。基本上,我们使用带有 hooks + graphqltag 的 react + apollo 客户端。
但问题不在于如何隐藏 UI 的某些部分,而是如何按权限拆分查询。所以现在对于页面,我们为不同类型的数据创建一个包含许多“子查询”的单个查询。例如 :
export const GET_DATA_X= gql`
query getDataX(
$applicationId: ID!
$dateFrom: String!
$dateTo: String!
$displayMode: String!
) {
applicationShipDates(
applicationId: $applicationId
dateFrom: $dateFrom
dateTo: $dateTo
displayMode: $displayMode
) {
periodStartDate
dates
}
graphStatistics(
applicationId: $applicationId
dateFrom: $dateFrom
dateTo: $dateTo
) {
totalVisits
totalConversions
conversionRate
}
}
`;
现在,如果用户有权限,则此查询的每个部分都将可用。在后端,它已经被处理了。我们抛出空/空数组和错误。但是IMO我们甚至不应该要求这部分数据。这就是问题所在。您对如何使用 apollo 客户端执行此操作有任何建议吗?
现在我对如何做到这一点有两个想法:
- 如果用户有权限,则将查询拆分为单个并进行一些 API 调用,否则跳过它
- 编写一个自定义函数,我将在其中作为对象的 prop 数组传递,包括查询定义和查询所需的权限。我将通过权限和从小查询定义过滤这个数组,
applicationShipDates
或者graphStatistics
我将创建一个大查询,比如getDataX
其中包含很少的“子查询”