Composer 中的 ThingWorx 模型定義 > 建模 > 程式碼片段 > QueryImplementingThingsOptimized
QueryImplementingThingsOptimized
描述
QueryImplementingThingsOptimized 服務可用於高效查詢物形式與物範本。它提供兩個 JavaScript 服務:
QueryImplementingThingsOptimized
QueryImplementingThingsOptimizedWithTotalCount
您可使用與呼叫 QueryImplementingThings 服務相同的方式呼叫這兩個服務。例如,ThingShapes["shape1"].QueryImplementingThingsOptimized
WithTotalCount 會傳回包含結果與總列數的資料負載,並會忽略套用至查詢的最大項目限制或位移。例如,如果您在 maxItems 設定為 5 的情況下進行查詢,會傳回五列;但總列數可能等於 100,這是在套用限制之前找到的總列數。
QueryImplementingThingsOptimized 服務搜尋快取而非資料庫,下列限制適用:
只能輸入指定物形式或物範本上的內容。您可以使用 propertyNames 參數指定內容。如果內容位於「物件」上,但不在指定的「物形式」上,服務將會擲出例外。
不允許依密碼類型進行篩選或排序。
會略過因權限而無法篩選的內容。如果所請求的內容未篩選且不可見,會針對該物件將其傳回為 null。
例如,您依照指定物形式的 prop1 內容進行篩選,且存在 Thing1Thing2Thing3。針對 Thing1,您看不到 prop1;因此,即使 Thing1 的值與篩選器相符,也會將其略過。將只會傳回 Thing2Thing3
不允許依照下列基本內容進行篩選或排序:homeMashupAvatarprojectNameisSystemObject
輸入
參數名稱
描述
基礎類型
networkName
要篩選的網路名稱。查詢將只會傳回從該網路的物件中找到的結果。
STRING
networkParentNode
networkName 中所指定之網路中頂層節點的名稱。查詢將會傳回網路中指定父節點的所有子項。
STRING
networkMaxDepth
尋找父節點子項所在的層級。1 會傳回直接子項,2 會傳回子項的子項。如果將其設定為 0 或預設值/null,則會傳回子項的完整階層。
INTEGER
offset
依指定值的結果位移。例如,如果資料庫中有 200 個結果的位移為 5,會傳回 200 - 5 的結果 (總數為 195)。
您可以將 offsetmaxItems 組合使用,來模擬分頁。您越深入查詢大量結果,查詢時間就越慢。
例如,存在物件 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
指示所需的最大項目數,類似於分頁中的頁面大小。這對於控制結果單一頁面中傳回的項目數很有用。
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 */
});
這是否有幫助?