我有一个树结构。以文件夹为例。
如何使用 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)
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来减少此查询中的一些重复。详情请看这里。
| 归档时间: |
|
| 查看次数: |
2337 次 |
| 最近记录: |