开发解决方案的最佳做法 > 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 或默认/空,则它将返回子项的完整层次结构。
offset
按指定值偏移结果。例如,如果数据库中有 200 个结果,偏移量为 5,则会返回结果 5 至 200 (总计 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 参数指定属性。如果属性在事物上,但不在指定的事物形态上,则服务将抛出异常。
不允许对密码类型进行筛选或排序。
因权限问题而无法筛选的具属性事物将被忽略。如果已请求未筛选且不可见的属性,则会将其作为该事物的空值返回。
例如,您正在筛选给定事物形态的属性 prop1,其中 Thing1Thing2Thing3 均存在。对于 Thing1prop1 处于不可见状态;因此,即使其值与筛选器相匹配,Thing1 也会被忽略。此时将仅返回 Thing2Thing3
不允许对以下基本属性进行筛选或排序:homeMashupAvatarprojectNameisSystemObject
这对您有帮助吗?