4

我有一个父节点的 webroot 路径,并希望返回该节点的子节点。例如,使用https://demo.getmesh.io/api/v1/demo/webroot/images/只会产生节点本身。

4

2 回答 2

5

不幸的是,仅使用 webroot 是不可能的。但是,还有其他方法可以实现它:

  • 通过使用此查询来使用GraphQL-Enpoint,例如:

    query childrenByWebroot($path: String) {
     node(path: $path) {
       uuid
       children {
         elements {
           uuid
         }
       }
      }
    }
    

    这只会加载孩子和父母的所有 UUID。有关更多功能,请查看GraphQL 文档以获取更多信息。

  • 首先从 webroot 加载节点,然后通过Children-Endpoint加载子节点:/api/v1/<project>/nodes/<uuid>/children

  • 搜索以webroot-element 为父节点的节点。如果需要,这使您可以更清楚地过滤内容:

    {
      "query": {
        "bool": {
          "must": [
            {
              "term": {
                "parentNode.uuid": "<uuid>"
              },
              // ... Other checks
            }
          ]
        }
      }
    }
    
于 2017-11-13T12:49:18.723 回答
4

目前无法使用单个请求通过 REST 加载节点的子节点。但是,您可以加载路径的节点。使用该节点的 uuid 并通过/api/v1/:projectName/nodes/:nodeUuid/children 加载子节点

然而,更优雅的方法是使用以下 graphql 查询。我强烈推荐这个选项,因为它在处理大型数据集时效率更高。

背景:计算totalCount/totalPage大小的成本很高,您可以通过使用hasPreviousPage和来避免这种情况hasNextPage

您可以使用以下graphql 查询

query ($path: String) {
  node(path: $path) {
    children(perPage: 5) {
      hasNextPage
      hasPreviousPage
      currentPage
      elements {
        uuid
        fields {
          ... on vehicleImage {
            name
          }
        }
      }
    }
  }
}

查询变量:

{
  "path": "/images"
}
于 2017-11-13T12:51:21.690 回答