2017-11-13 6 views

答えて

3

単一の要求を使用してRESTを介してノードの子をロードする方法は現在ありません。ただし、パスのノードをロードすることはできます。そのノードのuuidを使用して、子をロードする/api/v1/:projectName/nodes/:nodeUuid/children

しかし、より洗練されたアプローチは、次のgraphqlクエリを使用することです。大規模なデータセットを扱うときにはより効率的なので、このオプションを強くお勧めします。

背景:totalCount/totalPageサイズの計算は高価であり、あなたがhasPreviousPagehasNextPageを使用することによって、これを回避することができます。

あなたは、次のgraphql query使用することができます。

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

クエリ変数:

{ 
    "path": "/images" 
} 
4

残念ながら、ウェブルートだけではできません。しかし、それを達成するために他の方法があります:

  • は、例えば、このクエリを使用してGraphQL-Enpointを使用します。

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

    これは単なる子どもと親のすべてのUUIDをロードします。機能の詳細については、Docs of GraphQLを参照してください。

  • が最初のWebルートからのノードをロードした後、Children-Endpointを経由して子をロード:/api/v1/<project>/nodes/<uuid>/children親としてウェブルート要素を持っている

  • Search for Nodes。これは、あなたはそれが必要な場合は、より明確にコンテンツをフィルタリングすることができます:

    { 
        "query": { 
        "bool": { 
         "must": [ 
         { 
          "term": { 
          "parentNode.uuid": "<uuid>" 
          }, 
          // ... Other checks 
         } 
         ] 
        } 
        } 
    } 
    
関連する問題