【发布时间】:2017-11-28 12:55:15
【问题描述】:
我有一个树形数据结构,我想通过 GraphQL API 返回它。
该结构不是特别大(小到足以在一次调用中返回它不会成为问题)。
结构的最大深度没有设置。
我已经将结构建模为:
type Tag{
id: String!
children: [Tag]
}
当人们想要将标签获得任意深度时就会出现问题。
要让所有孩子(例如)达到 3 级,可以编写如下查询:
{
tags {
id
children {
id
children {
id
}
}
}
}
有没有办法编写查询以将所有标签返回到任意深度?
如果不是,在 GraphQL API 中为上述结构建模的推荐方法是什么。
【问题讨论】:
-
这个想法是不需要一次全部嵌套,而只在需要时。参见例如stackoverflow.com/questions/32497759/… 或 github.com/facebook/relay/issues/246。他们都创建了实体 Human(分别是 Babushka),它在需要时加载孩子。有一些停靠点。 (因为它没有完全回答“如何让标签达到任意深度”,我只添加这个作为评论)
-
谢谢您的回答。当然,您可以分步加载分层数据结构,这对于任何足够大的结构都是正常的方法。然而,在我的情况下(总共少于 100 个节点),这将是多余的,并且会不必要地使我的 UI 复杂化,因为节点扩展操作的回调。
-
其他可能性是使服务器端控制器github.com/thecodingmachine/graphql-controllers... 或展平树以仅具有 parentId 属性。两者都很好,很干净,但两者都应该工作......你觉得呢?
-
我真的很喜欢将整个结果展平并在客户端重建它的想法。我认为这将是最干净的方法,并且我可能会实施,再次感谢。
标签: graphql