Github 按里程碑划分的 Graphql 过滤器问题

Github Graphql Filter issues by Milestone

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

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

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

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

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

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

您可以使用带有 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
        }
      }
    }
  }
}

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
            }
          }
        }
      }
    }
  }
}