里程碑的 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 过滤器问题的主要内容,如果未能解决你的问题,请参考以下文章