Composer 中的 ThingWorx 模型定义 > 建模 > 代码片段 > QueryImplementingThingsOptimized
QueryImplementingThingsOptimized
说明
QueryImplementingThingsOptimized 服务用于高效查询事物形态和事物模板。它提供两种 JavaScript 服务:
QueryImplementingThingsOptimized
QueryImplementingThingsOptimizedWithTotalCount
它们的调用方式与 QueryImplementingThings 服务的调用方式相同。例如,ThingShapes["shape1"].QueryImplementingThingsOptimized
WithTotalCount 可返回包含结果和总行数的信息表,忽略应用于查询的最大项数限制或偏移。例如,如果在查询时将 maxItems 设置为 5,则会返回五行;但总行数可能等于 100,该值为应用限制前所查找到的总行数。
QueryImplementingThingsOptimized 服务会针对缓存而非数据库进行搜索,且以下限制适用:
只能输入指定事物形态或事物模板上的属性。可使用 propertyNames 参数指定属性。如果属性在事物上,但不在指定的事物形态上,则服务将抛出异常。
不允许对密码类型进行筛选或排序。
因权限问题而无法筛选的具属性事物将被忽略。如果已请求未筛选且不可见的属性,则会将其作为该事物的空值返回。
例如,您正在筛选给定事物形态的属性 prop1,其中 Thing1Thing2Thing3 均存在。对于 Thing1prop1 处于不可见状态;因此,即使其值与筛选器相匹配,Thing1 也会被忽略。此时将仅返回 Thing2Thing3
不允许对以下基本属性进行筛选或排序:homeMashupAvatarprojectNameisSystemObject
输入
参数名称
说明
基本类型
networkName
筛选所基于的网络名称。查询将仅返回从该网络的事物中查找到的结果。
STRING
networkParentNode
通过 networkName 指定的网络中顶部节点的名称。查询将返回网络中指定父节点的所有子项。
STRING
networkMaxDepth
要在其中查找父节点子项的级别。1 返回直接子项,2 返回子项的子项。如果将其设置为 0 或默认/空,则它将返回子项的完整层次结构。
INTEGER
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 个结果。
以此类推。
在此示例中,返回的结果数量较小,因此查询时间很快。
NUMBER
basicPropertyNames
用于列出基本属性的名称。
INFOTABLE
withPermissions
布尔型参数 (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 */
});
这对您有帮助吗?