gpt4 book ai didi

基于字段特定值的 GraphQL 查询

转载 作者:行者123 更新时间:2023-12-03 16:23:40 26 4
gpt4 key购买 nike

我希望能够使用他们的 GraphQL API 从 GitHub 检索特定存储库的最新版本。为此,我需要获取最新版本,其中 isDraft 和 isPrerelease 为 false。我已经设法获得了第一部分,但无法弄清楚如何进行查询的“where”部分。

这是我得到的基本查询( https://developer.github.com/v4/explorer/ ):

{
repository(owner: "paolosalvatori", name: "ServiceBusExplorer") {
releases(first: 1, orderBy: {field: CREATED_AT, direction: DESC}) {
nodes {
name
tagName
resourcePath
isDraft
isPrerelease
}
}
}
}

返回:
{
"data": {
"repository": {
"releases": {
"nodes": [
{
"name": "3.0.4",
"tagName": "3.0.4",
"resourcePath": "/paolosalvatori/ServiceBusExplorer/releases/tag/3.0.4",
"isDraft": false,
"isPrerelease": false
}
]
}
}
}
}

我似乎无法找到一种方法来做到这一点。部分原因是我是 GraphQL 的新手(第一次尝试进行查询)并且我不确定如何构建我的问题。

只能基于支持参数的类型(例如下面的存储库和版本)“查询”吗?似乎应该有一种方法可以在字段值上指定过滤器。

存储库: https://developer.github.com/v4/object/repository/

发布: https://developer.github.com/v4/object/releaseconnection/

节点: https://developer.github.com/v4/object/release/

最佳答案

Can one only "query" based on those types that support arguments



是的:GraphQL 没有像 SQL 那样定义通用查询语言。您无法以服务器和应用程序架构未提供的方式对字段结果进行排序或过滤。

I want to be able to retrieve the latest [non-draft, non-prerelease] release from GitHub for a specific repo using their GraphQl API.



正如您已经发现的, the releases field on the Repository type没有对这些字段进行排序或过滤的选项。相反,您可以使用多个 GraphQL 调用一次迭代一个版本。这些单独看起来像

query NextRelease($owner: String!, $name: String!, $after: String) {
repository(owner: $owner, name: $name) {
releases(first: 1,
orderBy: {field: CREATED_AT, direction: DESC},
after: $after) {
pageInfo { lastCursor }
nodes { ... ReleaseData } # from the question
}
}
}

以与现在相同的方式运行它(我已将标识存储库的信息拆分为单独的 GraphQL 变量)。您可以不使用 after第一次调用的变量。如果(如在您的示例中)它返回 "isDraft": false, "isPrerelease": false ,你准备好了。如果没有,您需要重试:从 lastCursor 中取值在响应中,并运行相同的查询,将该游标值作为 after 传递变量值。

关于基于字段特定值的 GraphQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55978445/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com