You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用GitHub GraphQL API按状态及里程碑筛选ProjectV2中的项

用GitHub GraphQL API筛选ProjectV2项的解决方案

要实现按状态或里程碑筛选ProjectV2中的项,你需要在items字段中添加filter参数,利用GitHub GraphQL提供的ProjectV2ItemFilter进行条件过滤。以下是两种场景的具体实现:

1. 筛选状态为CLOSED或MERGED的Issue/Pull Request

修改后的查询代码如下,重点是添加filter参数,通过contentFilters分别指定Issue和PR的状态条件:

query getProject($projectOwnerName: String!, $projectNumber: Int!) {
  organization(login: $projectOwnerName) {
    projectV2(number: $projectNumber) {
      items(
        first: 10
        # 筛选条件:匹配CLOSED的Issue,或MERGED/CLOSED的PR
        filter: {
          contentFilters: [
            {
              issue: { state: CLOSED }
            }
            {
              pullRequest: { state: MERGED }
            }
            {
              pullRequest: { state: CLOSED }
            }
          ]
        }
      ) {
        pageInfo {
          endCursor
          hasNextPage
          hasPreviousPage
          startCursor
        }
        totalCount
        nodes {
          content {
            ... on Issue {
              title
              url
              state
            }
            ... on PullRequest {
              title
              url
              state
            }
          }
        }
      }
    }
  }
}

说明:

  • contentFilters是数组,支持多个条件的或逻辑(满足任一条件即匹配)
  • Issue的状态选项仅包含OPEN和CLOSED,Pull Request的状态选项包含OPEN、CLOSED、MERGED
  • 若只需筛选MERGED的PR,可去掉pullRequest: { state: CLOSED }这一项

2. 按里程碑筛选

如果要筛选属于特定里程碑的Issue/PR,替换filter参数为里程碑条件即可,示例如下(以里程碑名称匹配为例):

query getProject($projectOwnerName: String!, $projectNumber: Int!, $milestoneTitle: String!) {
  organization(login: $projectOwnerName) {
    projectV2(number: $projectNumber) {
      items(
        first: 10
        # 筛选匹配指定里程碑的内容
        filter: {
          contentFilters: [
            {
              issue: { milestone: { title: $milestoneTitle } }
            }
            {
              pullRequest: { milestone: { title: $milestoneTitle } }
            }
          ]
        }
      ) {
        pageInfo {
          endCursor
          hasNextPage
          hasPreviousPage
          startCursor
        }
        totalCount
        nodes {
          content {
            ... on Issue {
              title
              url
              state
              milestone {
                title
              }
            }
            ... on PullRequest {
              title
              url
              state
              milestone {
                title
              }
            }
          }
        }
      }
    }
  }
}

说明:

  • 新增$milestoneTitle变量,用于传入目标里程碑的名称
  • 也可通过里程碑的number或id匹配,比如milestone: { number: 5 }
  • 若需同时结合状态和里程碑筛选,将两种条件都加入contentFilters数组即可(当前GitHub GraphQL对ProjectV2暂不支持复杂的与逻辑,如需精确的与匹配需自行后续处理结果)

内容的提问来源于stack exchange,提问作者Minh Nguyen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 01:20:10