如何在GitHub GraphQL查询中过滤嵌套totalCount为0的结果节点?
结论
- 你需要的过滤逻辑无法直接在GitHub GraphQL查询中实现,必须在查询返回后通过业务代码处理。
原因说明
GraphQL的过滤能力完全由服务端开放的schema决定,不是通用语法支持任意维度过滤。
- GitHub的
search接口(查询类型为REPOSITORY时)仅支持通过query参数传入GitHub原生搜索语法支持的过滤规则,比如按仓库stars数、开发语言、是否归档、所有者等维度筛选,没有开放「按指定用户在默认分支的提交数是否大于0」这类过滤条件。 - 你查询中获取的
defaultBranchRef.target.history.totalCount属于仓库的嵌套字段,GitHub没有提供基于这类嵌套字段返回值过滤上层节点的能力,因此服务端无法直接帮你剔除totalCount为0的节点。
推荐处理方案
- 保留现有查询语句不变,按分页规则拉取所有符合
$q搜索条件的仓库 - 在业务代码中对返回的
nodes数组做过滤,仅保留符合计数要求的节点即可,以下是JS示例:
const validRepositories = data.search.nodes.filter(repo => { return repo.defaultBranchRef?.target?.history?.totalCount > 0 })
内容的提问来源于stack exchange,提问作者dagda1
相关产品推荐
相关产品推荐

