里程碑的 Github Graphql 过滤器问题

Posted

技术标签:

【中文标题】里程碑的 Github Graphql 过滤器问题【英文标题】:Github Graphql Filter issues by Milestone 【发布时间】:2018-03-11 21:48:57 【问题描述】:

我正在努力解决 Github 的 graphql api(在学习 graphql 时)试图让它列出某个里程碑中的所有问题。我无法从 API 文档中弄清楚如何做到这一点。

我可以查询问题并查看它们处于哪个里程碑(抱歉,名称已编辑):

query 
    repository(owner:"me", name:"repo") 
        issues(last:10) 
            nodes 
                milestone 
                    id
                    title
                
            
         
    

我希望有一种方法可以表达issues(milestoneID:"xyz") 之类的内容,或者如果Issue 会定义一个MilestoneConnection(似乎不存在)。

到目前为止,在我阅读/学习 GraphQL 的过程中,如果架构中未定义显式参数,我还没有找到一种方法来构建任意字段过滤器(我说得对吗?)。

我想我可以查询存储库中的所有问题并后处理 JSON 响应以过滤出我想要的里程碑,但是有没有更好的方法来使用 github + graphql 做到这一点?

【问题讨论】:

【参考方案1】:

GitHub 最近添加了查看与给定里程碑相关的所有问题的功能。您应该能够使用类似于以下内容的查询来获取它:

query($id:ID!) 
  node(id:$id) 
    ... on Milestone 
      issues(last:10) 
        edges 
          node 
            title
            author 
              login
            
          
        
      
    
  

或者如果您不知道节点 ID,您可以执行以下操作:

query($owner:String!,$name:String!,$milestoneNumber:Int!) 
  repository(owner:$owner,name:$name) 
    milestone(number:$milestoneNumber) 
      issues(last:10) 
        edges 
          node 
            title
            author 
              login
            
          
        
      
    
  

【讨论】:

谢谢,太好了!这现在应该是公认的答案,但我无法更改它。【参考方案2】:

您可以使用带有milestone 过滤器的搜索查询:


  search(first: 100, type: ISSUE, query: "user:callemall repo:material-ui milestone:v1.0.0-prerelease state:open") 
    issueCount
    pageInfo 
      hasNextPage
      endCursor
    
    edges 
      node 
        ... on Issue 
          createdAt
          title
          url
        
      
    
  

【讨论】:

非常感谢!需要注意的一件事:如果里程碑名称有空格,您需要再次转义名称周围的引号。如果您使用 curl,并且已经转义了查询字符串周围的引号,那将是双重转义...即query: \"... milestone: \\\"a name\\\" ...\"

以上是关于里程碑的 Github Graphql 过滤器问题的主要内容,如果未能解决你的问题,请参考以下文章

使用 graphql 查询 github 项目卡片

GraphQL Spring-boot 查询过滤

Spring官方发布新成员:Spring GraphQL

Spring官方发布新成员:Spring GraphQL

apollo 客户端,带过滤器的查询

如何在 apollo graphql 服务器中编写解析 graphql 过滤器