QueryImplementingThingsOptimized
Описание
Сервис QueryImplementingThingsOptimized используется для эффективного запроса профилей и шаблонов вещей. Он предлагает два сервиса JavaScript:
QueryImplementingThingsOptimized
QueryImplementingThingsOptimizedWithTotalCount
Их можно вызывать таким же способом, как и сервис QueryImplementingThings. Например: ThingShapes["shape1"].QueryImplementingThingsOptimized.
WithTotalCount возвращает таблицу данных, содержащую результат, и общее количество строк без учета ограничения на максимальное число элементов или смещения, примененного к запросу. Например, если в запросе для maxItems задано значение 5, будет возвращено пять строк. Однако общее число строк может быть равно 100, т. е. общему числу найденных строк до применения предела.
Сервис QueryImplementingThingsOptimized выполняет поиск в кэше, а не в базе данных, и действуют следующие ограничения.
Входными данными могут быть только свойства для указанного профиля вещи или шаблона вещи. Указать свойства можно, используя параметр propertyNames. Если свойство находится в вещи, но не в указанном профиле вещи, сервис выдаст исключение.
Фильтрация или сортировка по типу пароля не разрешены.
Вещи со свойством, которое не подлежит фильтрации из-за разрешений, игнорируются. Если запрошено свойство, которое не фильтруется и не является видимым, результат для этой вещи будет возвращен как NULL.
Например, выполняется фильтрация по свойству prop1 данного профиля вещи, в котором существуют Thing1, Thing2 и Thing3. Для Thing1 свойство prop1 нельзя видеть; поэтому Thing1 будет игнорироваться, даже если его значение соответствует фильтру. Будут возвращены только Thing2 и Thing3.
Не разрешена фильтрация или сортировка по следующим базовым свойствам: homeMashup, Avatar, projectName и isSystemObject.
Входные данные
Имя параметра
Описание
Базовый тип
networkName
Имя сети, в которой будет выполнена фильтрация. Запрос возвратит только результаты, найденные в вещах этой сети.
STRING
networkParentNode
Имя узла верхнего уровня в сети, указанной в networkName. Запрос вернет все дочерние элементы для указанного родительского узла в этой сети.
STRING
networkMaxDepth
Уровень, на котором ведется поиск дочерних элементов родительского узла. При значении 1 возвращаются прямые потомки, а при значении 2 возвращаются потомки потомков. Если задано значение 0 или default/null, возвращается полная иерархия потомков.
INTEGER
offset
Смещение результата на указанное значение. Например, при наличии 200 результатов в базе данных и смещении 5 возвращаются результаты с 5 по 200 (всего 195).
Для расчета постраничной разбивки можно комбинировать параметры offset и maxItems. При запросе большего количества результатов время запроса может увеличиваться.
Например, существуют вещи с 1-й по 1000-ю и значение maxItems равно 5, поэтому на каждой странице отображается 5 результатов.
Страница 1: смещение равно 0. Возвращаются первые 5 результатов, так как maxItems равно 5.
Страница 2: значение offset равно 5. Возвращаются результаты с 6-го по 10-й.
Страница 3: смещение равно 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 */
});
Было ли это полезно?