QueryImplementingThingsOptimized
説明
QueryImplementingThingsOptimized サービスは、Thing Shape と Thing Template を効率的にクエリーするために使用されます。これは、次の 2 つの JavaScript サービスを提供します。
QueryImplementingThingsOptimized
QueryImplementingThingsOptimizedWithTotalCount
これらは QueryImplementingThings サービスを呼び出すときと同じ方法で呼び出すことができます。例: ThingShapes["shape1"].QueryImplementingThingsOptimized
WithTotalCount は、クエリーに適用されているアイテムの上限やオフセットは無視したうえで、行の総数と結果が格納されているインフォテーブルを返します。たとえば、maxItems5 に設定してクエリーした場合、5 つの行が返されますが、上限を適用する前に検出された行の総数は 100 になることもあります。
QueryImplementingThingsOptimized サービスは、データベースではなくキャッシュをサーチし、以下の制限が適用されます。
指定された Thing Shape または Thing Template 上のプロパティだけを入力として指定できます。プロパティは propertyNames パラメータを使用して指定できます。プロパティが Thing には存在するが、指定された Thing Shape には存在しない場合、このサービスは例外を返します。
パスワードタイプによるフィルタや並べ替えはできません。
アクセス許可が理由でフィルタできないプロパティを持つ Thing は無視されます。フィルタされておらず、表示されないプロパティがリクエストされた場合、その Thing では Null として返されます。
たとえば、Thing1Thing2Thing3 が存在し、特定の Thing Shape のプロパティ prop1 に基づいてフィルタを適用しているとします。Thing1 では prop1 が表示されないので、その値がフィルタと一致する場合でも Thing1 は無視されます。Thing2Thing3 だけが返されます。
基本プロパティ homeMashupAvatarprojectName、および isSystemObject に基づいたフィルタや並べ替えは許可されていません:
入力
パラメータ名
説明
ベースタイプ
networkName
フィルタを適用するネットワークの名前。クエリーはそのネットワーク内の Thing で見つかった結果のみを返します。
STRING
networkParentNode
networkName で指定したネットワーク内の最上位ノードの名前。そのネットワーク内の指定された親ノードのすべての子が返されます。
STRING
networkMaxDepth
親ノードの子を検索するレベル。1 は直接の子を返し、2 は子の子を返します。0 または default/null に設定されている場合、子の完全な階層を返します。
INTEGER
offset
指定した値による結果のオフセット。たとえば、データベース内に 200 個の結果があり、オフセットが 5 に設定されている場合、5 から 200 までの結果 (合計 195) が返されます。
offsetmaxItems と組み合わせることでページ付けをシミュレーションできます。クエリーで返される結果の数が多くなるほど、クエリー時間が長くなることがあります。
たとえば、Thing 1 から 1000 が存在し、maxItems が 5 の場合、各ページには結果が 5 つ表示されます。
ページ 1: offset は 0。maxItems は 5 なので、最初の 5 つの結果が返されます。
ページ 2: offset は 5。結果 6 から 10 が返されます。
ページ 3: offset は 10。結果 11 から 15 が返されます。
以下同様。
この例では、返される結果の数が少ないので、クエリー時間は短くなります。
NUMBER
basicPropertyNames
基本プロパティの名前をリストします。
INFOTABLE
withPermissions
アクセス許可を考慮するかどうかを指定する BOOLEAN パラメータ (true または false)。true の場合、操作を実行する前にサービスによってアクセス許可がチェックされます。
BOOLEAN
nameMask
名前をフィルタするためのパターンまたはマスクを指定します。
STRING
propertyNames
取得または操作するプロパティの名前をリストします。
INFOTABLE
query
結果をフィルタするためのクエリーパラメータを定義します。
QUERY
networkName
ネットワークの名前を指定します。
STRING
maxItems
ページ付けのページサイズと同様に、必要なアイテムの最大数を指定します。これは、結果の 1 ページで返されるアイテムの数を制御するのに役立ちます。
NUMBER
tags
フィルタするデータタグ。
TAGS
出力
インフォテーブル。
// result: INFOTABLE dataShape: "RootEntityList"
let result = ThingTemplates["GenericThing"].QueryImplementingThingsOptimized({
networkParentNode: undefined /* STRING */,
networkMaxDepth: undefined /* INTEGER {"defaultValue":0} */,
maxItems: undefined /* NUMBER {"defaultValue":500} */,
basicPropertyNames: undefined /* INFOTABLE {"dataShape":"EntityList"} */,
withPermissions: undefined /* BOOLEAN {"defaultValue":false} */,
offset: undefined /* NUMBER {"defaultValue":0} */,
nameMask: undefined /* STRING */,
propertyNames: undefined /* INFOTABLE {"dataShape":"EntityList"} */,
query: undefined /* QUERY */,
networkName: undefined /* STRING */,
tags: undefined /* TAGS */
});
これは役に立ちましたか?