【问题标题】:Get latest release without prerelease in GraphQL在 GraphQL 中获取没有预发布的最新版本
【发布时间】:2018-12-29 03:57:13
【问题描述】:

我正在将我与 GitHub REST API 的连接迁移到 GraphQL API,但我对获取最新版本感到困惑。

当我使用下面的这个端点来获取带有 REST API 的最新版本时,它永远不会返回草稿版本或预发布版本。

/repos/:owner/:repo/releases/latest

但是,当我对 GraphQL API 执行相同操作时,我无法过滤它,使用下面的查询我得到了最新版本,但如果是并且预发布,我将不得不再次查询以找到另一个。

{
  InovaFarmaApi: repository(owner: "precisaosistemas", name: "inovafarma-api") {
    ...releaseData
  }
}

fragment releaseData on Repository {
  releases (last: 2) {
      nodes {
        isPrerelease
      }
    }
}

我可以只过滤发布版本而不过滤草稿版本或预发布版本吗?

【问题讨论】:

标签: github graphql github-api


【解决方案1】:

看起来不像。

GitHub 开发人员文档包含所有 GraphQL 对象类型、它们的字段及其相关参数的完整列表。一个Repository 特别记录了它的releases field;具有 Relay 连接参数和排序,但唯一支持的 ReleaseOrderField 值是 CREATED_ATNAME

这意味着您需要重复调​​用以翻阅版本,直到找到符合您条件的版本。

query GetRelease($owner: String!, $name: String!, $cursor: String) {
  repository(owner: $owner, name: $name) {
    releases(before: $cursor,
             last: 1,
             orderBy: {field: CREATED_AT, order: DESC}) {
      pageInfo { hasPreviousPage, startCursor }
      nodes {
        isPrerelease
        ...OtherReleaseData
      }
    }
  }
}

如果您发布了isPrerelease 为真(您不想要)且hasPreviousPage 也为真的版本,请重新运行查询,将先前的startCursor 值作为cursor 参数传递。

【讨论】:

    猜你喜欢
    • 2012-05-09
    • 2017-12-09
    • 2023-04-01
    • 2019-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多