【问题标题】:GraphQL | Can we implement search by programming language in GitHub GraphQL API using Directives?GraphQL |我们可以使用指令在 GitHub GraphQL API 中通过编程语言实现搜索吗?
【发布时间】:2020-03-24 19:05:03
【问题描述】:

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

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")

我不想在搜索查询中传递“语言:kotlin”,我想使用指令来做到这一点。这样的事情可能吗?

【问题讨论】:

    标签: github graphql


    【解决方案1】:

    来自规范:http://spec.graphql.org/June2018/#sec--skip

    @skip 指令可以为字段、片段扩展和内联片段提供,并允许在执行期间按照 if 参数的描述进行条件排除。

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

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

    【讨论】:

      猜你喜欢
      • 2018-01-05
      • 2018-01-05
      • 1970-01-01
      • 2021-12-30
      • 2021-04-20
      • 2019-11-04
      • 2019-03-25
      • 2019-10-12
      相关资源
      最近更新 更多