所以我在我的 Android 应用程序中使用了带有 Hasura 和 Apollo 的 GraphQL。该应用程序与运动相关,它在比赛的多个片段中存储每个球员的多个得分集。我的 Postgres 数据库有以下表格(带有相关字段):
Match (id, other_fields...)
Segment (id, match_id, other_fields...)
Segment_Player (id, segment_id, player_id)
Player (id, other_fields...)
Score (id, segment_id, player_id, other_fields...)
Segment_Player
Segment
是和表之间的多对多桥接Player
表。Match
从toSegment
和 from Player
to有数组关系Score
。
我想查询以分段分隔的比赛中每个球员的得分。我想要的响应应该类似于以下结构:
Match
--Segment
----Player
------Score
我面临的问题是我无法找到一种方法来过滤PlayerId
和SegmentId
. Player
-Score
关系可以给我那个球员的所有分数。或者我可以在 和 之间创建一个关系Segment
,Score
这会给我该部分中每个玩家的分数。但是这些中的任何一个仍然会让我在客户端进行过滤。
我想要的是能够提供数据作为响应返回作为 where 子句中的参数,如下所示:
query PointsQuery($matchId: String!) {
SegmentQL: segment(where: {matchId: {_eq: $matchId}}) {
SegmentId: id
segment_player {
player {
...PlayerQL
scores(where: {segmentId: {_eq: SegmentId}}) {
...ScoreQL
}
}
}
}
}
如何在不过滤客户端数据的情况下实现这一点。