使用 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 或默认/空,则它将返回子项的完整层次结构。
◦ offset
按指定值偏移结果。例如,如果数据库中有 200 个结果,偏移量为 5,则会返回结果 5 至 200 (总计 195 个结果)。
可将 offset 与 maxItems 搭配使用以模拟分页。对大量结果的查询深入,查询时间可能会更慢。
例如,若存在事物 1 至 1000 且 maxItems 为 5,则每个页面将显示 5 个结果。
▪ 第 1 页:offset 为 0。由于 maxItems 为 5,因此会返回前 5 个结果。
▪ 第 2 页:offset 为 5。返回第 6 至第 10 个结果。
▪ 第 3 页:offset 为 10。返回第 11 至第 15 个结果。
▪ 以此类推。
在此示例中,返回的结果数量较小,因此查询时间很快。
限制
QueryImplementingThingsOptimized 服务会针对缓存而非数据库进行搜索,且以下限制适用:
• 只能输入指定事物形态或事物模板上的属性。可使用 propertyNames 参数指定属性。如果属性在事物上,但不在指定的事物形态上,则服务将抛出异常。
• 不允许对密码类型进行筛选或排序。
• 因权限问题而无法筛选的具属性事物将被忽略。如果已请求未筛选且不可见的属性,则会将其作为该事物的空值返回。
例如,您正在筛选给定事物形态的属性 prop1,其中 Thing1、Thing2 和 Thing3 均存在。对于 Thing1,prop1 处于不可见状态;因此,即使其值与筛选器相匹配,Thing1 也会被忽略。此时将仅返回 Thing2 和 Thing3。
• 不允许对以下基本属性进行筛选或排序:homeMashup、Avatar、projectName 和 isSystemObject。