嵌套查询到未知级别 GraphQL [重复]

Posted

技术标签:

【中文标题】嵌套查询到未知级别 GraphQL [重复]【英文标题】:Nested query to unknown level GraphQL [duplicate] 【发布时间】:2019-10-12 08:32:23 【问题描述】:

我有一个树形结构。以文件夹为例。

如何使用 GraphQL 将嵌套查询查询到 N 级。

让我们举个例子,因为我在类中有以下属性。

public class DocumentField
    
        public int Id  get; set; 

        public string Name  get; set; 

        public List<DocumentField> Children  get; set; 
    

服务器端的设计方式是,如果有孩子,那么它将作为孩子包含在内。但是 graphql 层限制了它,因为我的查询如下。

以下查询不会带子结果。

query ($folderId: Int!) 
                              folder(folderId: $folderId) 
                                id,
                                name
                              
                            

以下查询给出错误:嵌套查询 DocumentFieldICollection 类型的字段子项必须有子选择

query ($folderId: Int!) 
                          folder(folderId: $folderId) 
                            id,
                            name,
                            children
                          
                        

【问题讨论】:

【参考方案1】:

GraphQL 不允许动态查询这种递归结构到所有级别。您必须明确指定要查询的级别。例如,要查询到下 4 个级别,查询看起来很喜欢:

query ($folderId: Int!) 
  folder(folderId: $folderId) 
    id
    name
    children 
       id 
       name
       children
          id
          name
          children
            id
            name
          
       
    
  
 

您可以使用fragment 来减少此查询中的一些重复。详情请见this。

【讨论】:

哦。现在这第一行真的很令人沮丧。我不知道客户端有多少嵌套级别。

以上是关于嵌套查询到未知级别 GraphQL [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何处理 GraphQL 中的嵌套输入

以递归方式展平包含未知级别的嵌套数组和映射的嵌套映射

具有多个嵌套解析器并将字段映射到参数的 GraphQL 查询

有没有办法将 GraphQL 查询字段分组到子/嵌套查询组中?

为什么无法在graphql中过滤深层嵌套查询?

嵌套查询 GraphQL:语法错误 - iOS