QueryImplementingThingsOptimized
Descrizione
Il servizio QueryImplementingThingsOptimized viene utilizzato per interrogare in modo efficiente thing shape e modelli di oggetto. Offre due servizi JavaScript:
QueryImplementingThingsOptimized
QueryImplementingThingsOptimizedWithTotalCount
È possibile chiamarli in modo analogo al servizio QueryImplementingThings. Ad esempio, ThingShapes["shape1"].QueryImplementingThingsOptimized.
WithTotalCount restituisce una infotable contenente il risultato e il numero totale di righe, ignorando un limite massimo di elementi o un offset applicato all'interrogazione. Ad esempio, se si esegue un'interrogazione con maxItems impostato su 5, vengono restituite cinque righe. Tuttavia, il numero totale di righe potrebbe essere uguale a 100, ovvero il numero totale di righe trovate prima di applicare il limite.
Il servizio QueryImplementingThingsOptimized esegue la ricerca nella cache anziché nel database e vengono applicate le restrizioni riportate di seguito.
È possibile immettere solo le proprietà della thing shape o del modello di oggetto specificati. È possibile specificare le proprietà utilizzando il parametro propertyNames. Se una proprietà è riferita all'oggetto ma non alla thing shape specificata, il servizio genererà un'eccezione.
Non è consentito filtrare o ordinare in base al tipo di password.
Gli oggetti con una proprietà a cui i permessi non consentono di applicare filtri vengono ignorati. Se è richiesta una proprietà non filtrata e non visibile, la proprietà viene restituita come null per l'oggetto.
Ad esempio, si applica un filtro in base alla proprietà prop1 di una determinata thing shape in cui sono presenti Thing1, Thing2 e Thing3. Per Thing1 non è possibile visualizzare prop1, di conseguenza Thing1 verrà ignorato anche se il valore corrisponde al filtro. Verranno restituiti solo Thing2 e Thing3.
Non è consentito filtrare o ordinare in base alle seguenti proprietà di base: homeMashup, Avatar, projectName e isSystemObject.
Input
Nome parametro
Descrizione
Tipo di base
networkName
Nome della rete a cui applicare il filtro. L'interrogazione restituirà solo i risultati trovati da oggetti presenti nella rete.
STRING
networkParentNode
Il nome del nodo di livello superiore nella rete specificato in networkName. L'interrogazione restituirà tutti i figli del nodo padre specificato nella rete.
STRING
networkMaxDepth
Livello in corrispondenza del quale cercare i figli del nodo padre. 1 restituisce i figli diretti e 2 restituisce figli di figli. Se è impostato su 0 o su default/null, restituisce la gerarchia completa dei figli.
INTEGER
offset
Offset del risultato in base al valore specificato. Ad esempio, se sono presenti 200 risultati nel database con un offset di 5, vengono restituiti i risultati da 5 a 200 (per un totale di 195).
È possibile combinare offset con maxItems per simulare l'impaginazione. Quando si esegue l'interrogazione in un numero elevato di risultati, il tempo di interrogazione può rallentare.
Ad esempio, se in presenza di oggetti da 1 a 1000 maxItems è 5, ogni pagina mostra 5 risultati.
Pagina 1: l'offset è 0. Vengono restituiti i primi 5 risultati, in quanto maxItems è 5.
Pagina 2: l'offset è 5. Vengono restituiti i risultati da 6 a 10.
Pagina 3: l'offset è 10. Vengono restituiti i risultati da 11 a 15.
E così via.
In questo esempio il numero di risultati restituiti è basso, pertanto il tempo di interrogazione è veloce.
NUMBER
basicPropertyNames
Elenca i nomi delle proprietà di base.
INFOTABLE
withPermissions
Un parametro BOOLEAN (true o false) che specifica se è opportuno prendere in considerazione i permessi. Se è impostato su true, il servizio verifica la presenza di permessi prima di eseguire azioni.
BOOLEAN
nameMask
Specifica uno schema o una maschera per filtrare i nomi.
STRING
propertyNames
Elenca i nomi delle proprietà che si desidera recuperare o modificare.
INFOTABLE
query
Definisce i parametri di interrogazione per filtrare i risultati.
QUERY
networkName
Specifica il nome della rete.
STRING
maxItems
Indica il numero massimo di elementi necessari, in modo simile alle dimensioni di pagina nell'impaginazione. È utile per controllare il numero di elementi restituiti in una singola pagina di risultati.
NUMBER
tags
Tag dati da filtrare.
TAGS
Output
Infotable.
Esempio
// 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 */
});
È stato utile?