Github GraphQL列出整个内容树

问题描述:

我想使用GraphQL Github API递归列出目录中包含的所有文件。现在我的查询看起来是这样的:Github GraphQL列出整个内容树

{ 
    search(first:1, type: REPOSITORY, query: "language:C") { 
    edges { 
     node { 
     ... on Repository { 
      name 
      descriptionHTML 
      stargazers { 
      totalCount 
      } 
      forks { 
      totalCount 
      } 
      object(expression: "master:") { 
      ... on Tree { 
       entries { 
       name 
       type 
       } 
      } 
      } 
     } 
     } 
    } 
    } 
} 

但是,这只给我目录内容的第一级,特别是一些结果对象是树。有没有办法调整查询,以便递归地列出树的内容?

+0

我很高兴看到你的问题,这是因为你的例子解决了我在使用GraphQL时遇到的问题,因为我认为我知道解决方案。可悲的是,当我试图使用“片段”时,它抛出了一个关于“片段[片段名称]包含无限循环的错误,所以现在我也焦急地等待着这个问题的答案。 – REW

无法在GraphQL中递归迭代。但是,你可以这样做编程使用查询变量:

query TestQuery($branch: GitObjectID) { 
search(first: 1, type: REPOSITORY, query: "language:C") { 
    edges { 
     node { 
     ... on Repository { 
      object(expression: "master:", oid: $branch) { 
      ... on Tree { 
       entries { 
       oid 
       name 
       type 
       } 
      } 
      } 
     } 
     } 
    } 
    } 
} 

先从null值,并从那里走。