GraphQL|我们可以使用指令在GitHub GraphQL API中通过编程语言实现搜索吗



我正在试验GraphQL,我想创建一个用于高级搜索的GraphQL脚本。我一直在想如何搜索包含特定语言的存储库。例如,我只想搜索在Kotlin写的转发。这就是我的查询的样子

query AdvancedSearch($query: String!, $type: SearchType!, $numOfResults: Int!, $nextPageCursor: String) {
search(type: $type, query: $query, first: $numOfResults, after: $nextPageCursor) {
pageInfo {
hasNextPage
endCursor
}
repositoryCount
nodes {
... on Repository {
name
nameWithOwner
description
languages(first: 100) {
nodes {
name
}
}
}
}
}

}

我正在考虑在语言中使用@skip指令,比如

languages(first:100) @skip(if:$filterLanguage != "Kotlin")

我不想在搜索查询中传递"language:kotlin",我想使用指令来实现这一点。这样的事情可能发生吗?

根据规范:http://spec.graphql.org/June2018/#sec--跳过

@skip指令可以提供给字段、片段排列和内联片段,并允许在执行过程中进行条件排除,如if参数所述。

换句话说,@skip(及其对应的@include(指令仅确定请求中是否包含字段。以这种方式跳过字段与不首先包含字段是一样的。此外,指令的if参数只能传递给truefalse或布尔变量——不支持任何类型的表达式语法。

更重要的是,包含或省略特定字段不会影响任何父字段的执行方式。如果您的意图是修改search字段返回的结果,那么您需要为该字段提供适当的参数。模式可以提供某种参数,让您可以特定地按语言进行筛选,但事实并非如此——唯一的方法是通过query参数。

最新更新