如何在Directus.io中一次请求获取递归导航完整树形结构?
在Directus中获取递归导航的完整树形结构
Directus支持通过嵌套字段语法一次性获取多层递归的关联数据,针对你的navigation_items递归结构,只需要在请求的fields参数里逐层指定子层级的字段即可覆盖三级导航:
修改后的请求代码
如果需要指定具体字段:
$readItem('navigations', id, { fields: [ 'id', 'title', 'navigation_items.id', 'navigation_items.title', 'navigation_items.children.id', 'navigation_items.children.title', 'navigation_items.children.children.id', 'navigation_items.children.children.title' ] })
如果需要获取所有字段,可使用通配符简化写法:
$readItem('navigations', id, { fields: [ 'id', 'title', 'navigation_items.*', 'navigation_items.children.*', 'navigation_items.children.children.*' ] })
返回结果示例
执行后会返回包含完整三级树形结构的数据:
{ "id": "main", "title": "Main", "navigation_items": [ { "id": 3, "title": "一级导航项", "children": [ { "id": 4, "title": "二级导航项", "children": [ { "id": 5, "title": "三级导航项", "children": [] } ] } ] } ] }
注意事项
- 如果后续需要支持更多层级,只需继续嵌套
navigation_items.children.children.children.*这类字段即可,层级数量没有硬性限制,但需根据实际业务场景控制(避免请求数据量过大)。 - Directus目前不支持原生的无限递归查询(出于性能保护),所以一次请求必须显式指定需要覆盖的最深层级。
内容的提问来源于stack exchange,提问作者Martin at Mennt
相关产品推荐
相关产品推荐

