1. クライアントのクエリ

クエリを作成する

日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

クエリクライアントを使用してクエリを作成し、次のいずれかのクエリを実行したり、結果を反復処理したりできます。

クエリ結果の表示

クエリを実行すると、IQueryResultが返されます。この結果には、次のプロパティがあります。

  • Items - クエリに一致したエンティティ/ID (合計結果のサブセットにすることができます)。

  • TotalNumberOfResults - Sitecore Content Hubでクエリに一致したアイテムの数 (すべてがItemsにあるわけではない場合でも)。

  • Offset - スキップされた項目の数。

1つのエンティティのクエリ

クエリが1つのエンティティのみに一致することが確実な場合は、singleAsyncメソッドを使用できます。

var entity: IEntity = await client.querying.singleAsync(query);
警告

複数の項目がクエリに一致すると、InvalidOperationExceptionがスローされます。

1つのエンティティIDのクエリ

クエリが1つのエンティティのみに一致することが確実な場合は、singleIdAsyncメソッドを使用すると便利です。

var entityId: number = await client.querying.singleIdAsync(query);
警告

複数の項目がクエリに一致すると、InvalidOperationExceptionがスローされます。

1つまたは複数のエンティティのクエリ

1つ以上のエンティティをクエリするには:

import { IEntityQueryResult } from "@sitecore/sc-contenthub-webclient-sdk/dist/contracts/querying/entity-query-result";

var queryResult: IEntityQueryResult = await client.querying.queryAsync(query);

IEntityQueryResult.Itemsには、返されたエンティティが含まれています。

1つまたは複数のエンティティIDのクエリ

1つ以上のエンティティをクエリするには:

import { IIdQueryResult } from "@sitecore/sc-contenthub-webclient-sdk/dist/contracts/querying/id-query-result";

var queryResult: IIdQueryResult = await client.querying.queryIdsAsync(query);

IIdQueryResult.Itemsには、返されたエンティティが含まれています。

クエリ結果エンティティの反復処理

クエリが小規模から中規模の結果を返す場合 (既定の構成は最大10,000件の結果)、反復子を使用してエンティティを簡単にバッチ処理できます。

次のコード スニペットでは、反復子が作成されます。

import { EntityIterator } from "@sitecore/sc-contenthub-webclient-sdk/dist/contracts/querying/entity-iterator";

var iterator = new EntityIterator(client, query, EntityLoadConfiguration.Full);

次のコード スニペットでは、イテレータを使用してエンティティをバッチ処理しています。

while (await iterator.moveNextAsync()) {
  var entities: IEntity[] = iterator.current.items;
  // Do something with the entities
}

whileループは、イテレータがエンティティのすべてのバッチの処理を完了すると自動的に終了します。

警告

イテレータが設定された結果の最大数を超えると、サーバは例外をスローします。この場合、巻物が必要です。

クエリ結果エンティティIDの反復処理

クエリが小さいサイズから中程度のサイズの結果を返す場合 (既定の構成は最大10.000の結果)、イテレータを使用してエンティティIDを簡単にバッチ処理できます。

次のコード スニペットでは、反復子が作成されます。

import { EntityIdIterator } from "@sitecore/sc-contenthub-webclient-sdk/dist/contracts/querying/id-iterator";

var iterator = new EntityIdIterator(client, query);

次のコード スニペットでは、反復子を使用してエンティティIDをバッチ処理します。

while (await iterator.moveNextAsync()) {
  var ids: number[] = iterator.current.items;
  // Do something with the ids
}

whileループは、イテレータがエンティティのすべてのバッチの処理を完了すると自動的に終了します。

警告

イテレータが設定された結果の最大数を超えると、サーバは例外をスローします。この問題を解決するには、スクロールで別のクエリを使用できます。スクロールは、最初のいくつかの要素をスキップするために使用されます。

次の例は、スクロールを使用して最初の200個の要素をスキップする方法を示しています。

  var definitionQueryFilter = new DefinitionQueryFilter({ 
    names: ["M.Asset", "M.Fragment"],
    operator: ComparisonOperator.Equals 
  });

  // scroll by skipping 200
  var query = new Query({
    filter: definitionQueryFilter,
    skip: 200
  });

  var iterator = new EntityIdIterator(client, query);
  iterator

  while (await iterator.moveNextAsync()) {
    var ids: number[] = iterator.current.items;
    // Do something with the ids
  }
この記事を改善するための提案がある場合は、 お知らせください!