1. クエリ

クエリ クライアント

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

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

この SDK には、クエリを実行するクエリ クライアントがあります。

注意

次のコード例の client 変数は ContentHubClient インスタンスを意味します。JavaScript SDK を使用する場合、変数名は自由に選択できますが、ドキュメントの例では client という名前が使われています。

クエリの作成

クエリの作成の詳細については、「フィルターを使用したクエリの作成」を参照してください。

クエリ結果の処理

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

  • Items: クエリに一致したエンティティ/ID (合計結果全体のサブセットとなる場合があります)
  • TotalNumberOfResults: Sitecore Content Hub のクエリに一致したアイテムの数 (Items に含まれていないアイテムも含みます)。
  • Offset: スキップされたアイテムの数。

単一のエンティティに対するクエリ

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

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

クエリに複数のアイテムが一致する場合、InvalidOperationException がスローされます。

単一のエンティティ ID に対するクエリ

クエリが単一のエンティティのみに一致することが確実な場合は、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 つまたは複数のエンティティ ID に対してクエリを実行するには、次のようにします。

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

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

IIdQueryResult.Items には、返された ID (long 形式) が含まれています。

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

クエリが少数から中程度の数の結果を返す場合 (既定の設定では最大 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 skiping 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
}
この記事を改善するための提案がある場合は、 お知らせください!