Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
GitHub graphQL API对组织的多个查询&;存储库_Github_Github Graphql - Fatal编程技术网

GitHub graphQL API对组织的多个查询&;存储库

GitHub graphQL API对组织的多个查询&;存储库,github,github-graphql,Github,Github Graphql,我正在尝试使用graphQL多组织和存储库数据从GitHub获取数据。我在下面编写的代码只获得一个组织和存储库。 我想使用两个数组[String!]的变量,一个用于组织,另一个用于存储库。 所以 应该是 organization(login:$organization) {...} repository(owner:$organization, name:$repository) {...} 及 应该是 organization(login:$organization) {...} rep

我正在尝试使用graphQL多组织和存储库数据从GitHub获取数据。我在下面编写的代码只获得一个组织和存储库。 我想使用两个数组[String!]的变量,一个用于组织,另一个用于存储库。 所以

应该是

organization(login:$organization) {...}
repository(owner:$organization, name:$repository) {...}

应该是

organization(login:$organization) {...}
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
        }
      }
    }
  }
}
我会感谢你的帮助。
谢谢

这里是更新的请求,用于处理变量

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查询。

以下是我的解决方案,我希望它对其他人有所帮助:) 第一个答案是使用具有多个组织id的数组变量“Facebook”、“JavaScript”和 存储库“360捕获SDK”、“排序数组”。 如果您有10个、20个或更多的组织/存储库,那么从RESTAPI获取id将是一件非常愉快的事情:)

第二个答案是使用一种更具可读性的方法,尽管很麻烦

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
}

谢谢你的快速回答,尽管我已经这么做了。但在我看来,使用一组ID一点也不舒服,就像使用DNS时使用ip一样。我正在寻找一个解决方案,我将能够传递一个组织和存储库的名称数组,这是非常方便的。可能他们还没有到那里。也许这是目前的答案。ID数组将更接近于使用MAC地址(或某种唯一标识符的概念),因为存储库/组织名称可以更改。使用ID将处理修改名称的用户。另外,您可以对ID数组进行批处理,以避免进行多个查询,这对于两个应用程序处理/实现来说可能更有效。
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
}