对未知级别 GraphQL 的嵌套查询

Ano*_*tor 4 graphql

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

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

让我们举个例子,因为我在课堂上有以下属性。

public class DocumentField
    {
        public int Id { get; set; }

        public string Name { get; set; }

        public List<DocumentField> Children { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

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

以下查询不会带来孩子的结果。

query ($folderId: Int!) {
                              folder(folderId: $folderId) {
                                id,
                                name
                              }
                            }
Run Code Online (Sandbox Code Playgroud)

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

query ($folderId: Int!) {
                          folder(folderId: $folderId) {
                            id,
                            name,
                            children
                          }
                        }
Run Code Online (Sandbox Code Playgroud)

Ken*_*han 7

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

query ($folderId: Int!) {
  folder(folderId: $folderId) {
    id
    name
    children {
       id 
       name
       children{
          id
          name
          children{
            id
            name
          }
       }
    }
  }
 }
Run Code Online (Sandbox Code Playgroud)

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

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