嵌套查询到未知级别的GraphQL

时间:2019-05-26 15:01:58

标签: graphql

我有一个树状结构。假设以文件夹为例。

如何使用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 个答案:

答案 0 :(得分:3)

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

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

您可以使用fragment减少此查询中的重复项。有关详细信息,请参见this