開發解決方案的最佳作法 > HA 應用程式的最佳作法 > 使用 QueryImplementingThingsOptimized 服務
使用 QueryImplementingThingsOptimized 服務
欲針對物形式與物範本呼叫 QueryImplementingThingsOptimized 服務,可使用下列 JavaScript 服務:
QueryImplementingThingsOptimized
QueryImplementingThingsOptimizedWithTotalCount
您可使用與呼叫 QueryImplementingThings 服務相同的方式呼叫這兩個服務。如需詳細資訊,請參閱使用 QueryImplementingThings 服務。例如,ThingShapes["shape1"].QueryImplementingThingsOptimized
WithTotalCount 會傳回包含結果與總列數的資料負載,並會忽略套用至查詢的最大項目限制或位移。例如,如果您在 maxItems 設定為 5 的情況下進行查詢,會傳回五列;但總列數可能等於 100,這是在套用限制之前找到的總列數。
參數
下列參數適用於 QueryImplementingThingsOptimized
QueryImplementingThings 的參數:
EntityReference parentEntity,
int nMaxItems
TagCollection tagsToCompare,
String nameMask,
Query query,
boolean withData,
boolean withPermissions,
Collection<String> basicPropertyNames,
Collection<String> propertyNames,
QueryImplementingThingsOptimized 的其他參數:
networkName
要篩選的網路名稱。查詢將只會傳回從該網路的物件中找到的結果。
networkParentNode
networkName 中所指定之網路中頂層節點的名稱。查詢將會傳回網路中指定父節點的所有子項。
networkMaxDepth
尋找父節點子項所在的層級。1 會傳回直接子項,2 會傳回子項的子項。如果將其設定為 0 或預設值/null,則會傳回子項的完整階層。
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。
依此類推
在此範例中,傳回的結果數較少,因此查詢時間也比較快。
限制
QueryImplementingThingsOptimized 服務搜尋快取而非資料庫,下列限制適用:
只能輸入指定物形式或物範本上的內容。您可以使用 propertyNames 參數指定內容。如果內容位於「物件」上,但不在指定的「物形式」上,服務將會擲出例外。
不允許依密碼類型進行篩選或排序。
會略過因權限而無法篩選的內容。如果所請求的內容未篩選且不可見,會針對該物件將其傳回為 null。
例如,您依照指定物形式的 prop1 內容進行篩選,且存在 Thing1Thing2Thing3。針對 Thing1,您看不到 prop1;因此,即使 Thing1 的值與篩選器相符,也會將其略過。將只會傳回 Thing2Thing3
不允許依照下列基本內容進行篩選或排序:homeMashupAvatarprojectNameisSystemObject
這是否有幫助?