代码之家  ›  专栏  ›  技术社区  ›  thatrohit

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

  •  0
  • thatrohit  · 技术社区  · 5 年前

    我正在试验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”,我想使用指令来实现这一点。这样的事情可能吗?

    0 回复  |  直到 5 年前
        1
  •  1
  •   Daniel Rearden    5 年前

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

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

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

    更重要的是, 包含或省略特定字段不会影响任何父字段的执行方式 .如果您的目的是修改 search 字段,则需要为该字段提供适当的参数。模式 能够 提供某种参数,让您可以具体地按语言进行过滤,但情况似乎并非如此——唯一的方法是通过 query 论点