我正在尝试使用graphQL从GitHub获取多个组织和存储库数据。我在下面编写的代码仅获得1个组织和存储库。 我以为使用两个数组[String!]的变量,一个用于组织,第二个用于存储库。 所以
organization(login:"javascript") {...}
应该是
organization(login:$organization) {...}
和
repository(owner:"javascript", name:"sorted-array") {...}
应该是
repository(owner:$organization, name:$repository) {...}
但是我找不到如何在下面的代码中实现变量。
query {
rateLimit{
cost
remaining
resetAt
}
organization(login:"javascript") {
repositories{
totalCount
}
}
repository(owner:"javascript", name:"sorted-array") {
updatedAt
branches: refs(refPrefix:"refs/heads/") {
totalCount
}
tags: refs(refPrefix:"refs/tags/") {
totalCount
}
releases {
totalCount
}
object(expression:"master") {
... on Commit {
committedDate
history {
totalCount
}
}
}
}
}
将感谢您的帮助。 谢谢
答案 0 :(得分:1)
这是更新为使用变量的请求
query getOrg($owner: String!, $repo: String! ){
organization(login:$owner) {
repositories{
totalCount
}
}
repository(owner:$owner, name:$repo) {
updatedAt
branches: refs(refPrefix:"refs/heads/") {
totalCount
}
tags: refs(refPrefix:"refs/tags/") {
totalCount
}
releases {
totalCount
}
object(expression:"master") {
... on Commit {
committedDate
history {
totalCount
}
}
}
}
}
但是,使用GraphQL节点ID作为输入数组可能会更好地为您服务。使用组织或存储库的节点ID,类似...
query inputArray($id: [ID!]!){
nodes(ids: $id){
...on Repository{
id
}
}
}
请注意,API的GitHub V3支持返回GraphQL Node IDs,以帮助过渡到GraphQL查询。
答案 1 :(得分:1)
这是我的解决方案,希望对您有所帮助:) 第一个答案是将数组变量与组织“ Facebook”,“ JavaScript”和“ 存储库“ 360-Capture-SDK”,“排序数组”。 如果您有10个,20个或20个以上的组织/存储库,则将有很多时间从REST API中获取ID:)。
query inputArray($idOrg: [ID!]! $idRepo: [ID!]!){
orgNode:nodes(ids: $idOrg){
...on Organization{
name
}
}
repNode:nodes(ids: $idRepo){
...on Repository{
name
}
}
}
{
"idOrg": ["MDEyOk9yZ2FuaXphdGlvbjY5NjMx","MDEyOk9yZ2FuaXphdGlvbjE3ODIxODA="],
"idRepo":["MDEwOlJlcG9zaXRvcnk4Njg2MDg0Nw==","MDEwOlJlcG9zaXRvcnk5NzkxMTYy"]
}
第二个答案虽然麻烦,但却使用了更具可读性的方法。
query{
FacebookOrg: organization(login: "facebook") {
...OrgInfo
}
JavaScriptOrg: organization(login: "javaScript") {
...OrgInfo
}
FacebookRep: repository(owner: "facebook" name:"360-Capture-SDK"){
...RepInfo
}
JavaScriptRep: repository(owner: "javaScript" name:"sorted-array"){
...RepInfo
}
}
fragment OrgInfo on Organization {
name
}
fragment RepInfo on Repository {
name
}