GlideRecord – Client
GlideRecord wird für Datenbankvorgänge verwendet. Die clientseitige GlideRecord-API ermöglicht die Verwendung von GlideRecord-Funktionalität in clientseitigen Skripts, wie Client-Skripts und UI-Richtlinien-Skripts.
Ein GlideRecord enthält sowohl Datensätze als auch Felder. Mit GlideRecord (clientseitig) erstellte Abfragen werden auf dem Server ausgeführt. Daher wird vom Client-Browser eine Anforderung zum Abrufen der Datensatzdaten gestellt.
Die clientseitige GlideRecord-API wird in bereichsbezogenen Anwendungen nicht unterstützt. Erstellen Sie stattdessen eine Skripteinbindung, und verwenden Sie die GlideAjax-API oder die REST-APIs. Die clientseitige GlideRecord-API wendet außerdem basierend auf den Anmeldeinformationen des Benutzers, der das Skript ausführt, ACLs an. Um den Code auf dem Server ohne ACLs auszuführen, verwenden Sie die GlideAJAX-API.
Client side GlideRecord – GlideRecord(String tableName)
Erstellt eine Instanz der GlideRecord-Klasse für die angegebene Tabelle.
| Name | Typ | Beschreibung |
|---|---|---|
| tableName | Zeichenfolge | Die zu verwendende Tabelle. |
var now_GR = new GlideRecord('incident');
Client side GlideRecord – addOrderBy(String column)
Fügt eine Spalte zum Sortieren in der Abfrage hinzu.
| Name | Typ | Beschreibung |
|---|---|---|
| column | Zeichenfolge | Spalte, nach der der Ergebnissatz sortiert werden soll. |
| Typ | Beschreibung |
|---|---|
| void |
Client side GlideRecord – addQuery(String name, Object value)
Fügt eine Abfrage hinzu, um Datensätze zurückzugeben, in denen der angegebene Feldname einem angegebenen Wert entspricht (oder sich in einer Liste von Werten befindet).
Wenn Sie mit SQL vertraut sind, ähnelt diese Methode der „where“ -Klausel. Sie können eine oder mehrere Abfragen für einen einzelnen Filter erstellen, indem Sie diese Methode mehrmals aufrufen. Für diese Methode werden die Abfragen AND-verknüpft. Sobald Sie alle gewünschten Abfragen definiert haben, rufen Sie Client side GlideRecord – query(String name, Function responseFunction, String value) auf, um die angegebene Abfrageklausel (Filter) auszuführen.
Um eine andere Operation als AND auszuführen, verwenden Sie entweder die addQuery(String name, Object operator, Object value) -Methode oder die setEncodedQuery()- Methode.
| Name | Typ | Beschreibung |
|---|---|---|
| Name | Zeichenfolge | Name des zu überprüfenden Felds. |
| Wert | Objekt | Wert oder Liste der Werte, nach denen abgefragt werden soll. |
| Typ | Beschreibung |
|---|---|
| void |
Beispiel mit mehreren Abfragen.
var now_GR = new GlideRecord('incident');
now_GR.addQuery('priority', 4); // Priority is 4 – Low and,
now_GR.addQuery('state', 3); // State is On Hold
now_GR.query(response);
function response(result) {
while(result.next()) {
// Print all INC with priority 4 – Low AND state is On Hold
console.log(result.getValue('number'));
}
}
Beispiel, das zeigt, wie ein Zeichenfolgenobjekt übergeben wird.
var now_GR = new GlideRecord('incident');
now_GR.addQuery('short_description', new String('USB device not working')); // string object
now_GR.addQuery('priority', 4); //number
now_GR.query(response);
function response(result) {
while(result.next()) {
// Print all INC with priority 4 – Low AND short description contains 'USB device not working'
console.log(result.getValue('number'));
}
}
Client side GlideRecord – addQuery(String name, Object operator, Object value)
Fügt einen Filter hinzu, um Datensätze zurückzugeben, bei denen das Feld die angegebene Bedingung erfüllt (Feld, Operator, Wert).
Wenn Sie mit SQL vertraut sind, ähnelt diese Methode der „where“ -Klausel. Sie können eine oder mehrere Abfragen für einen einzelnen Filter erstellen, indem Sie diese Methode mehrmals aufrufen. Sobald Sie alle gewünschten Abfragen definiert haben, rufen Sie Client side GlideRecord – query(String name, Function responseFunction, String value) auf, um die angegebene Abfrageklausel (Filter) auszuführen.
Um komplexere Abfragen zu erstellen, verwenden Sie die Methode setEncodedQuery().
| Name | Typ | Beschreibung |
|---|---|---|
| Name | Zeichenfolge | Name des zu überprüfenden Felds. |
| operator | Objekt | Abfrageoperator. Die verfügbaren Werte sind vom Datentyp des value-Parameters abhängig. Zahlen:
Zeichenfolgen (in Großbuchstaben):
Hinweis: Verwenden Sie nicht den LIKE-Operator. Verwenden Sie stattdessen ENTHÄLT. |
| Wert | Objekt | Wert, nach dem abgefragt werden soll (Groß- und Kleinschreibung wird nicht berücksichtigt). |
| Typ | Beschreibung |
|---|---|
| void |
Beispiel, das zeigt, wie einem Filter mehrere Abfragen hinzugefügt werden.
var now_GR = new GlideRecord('incident');
now_GR.addQuery('priority', '<=', 2); // Priority is 2 or higher and,
now_GR.addQuery('short_description', 'CONTAINS', 'crash'); // Short description contains the word crash
now_GR.query(response);
function response(result) {
while(result.next()) {
// Print all INC with priority of 2 or higher AND short description contains "crash"
console.log(result.getValue('number'));
}
}
Beispiel, das zeigt, wie ein Array übergeben wird, um mehrere Bedingungen in einer einzelnen Abfrage zu überprüfen.
var priorities = [4,2];
var now_GR = new GlideRecord('incident');
now_GR.addQuery('priority', 'IN', priorities);
now_GR.query(response);
function response(result) {
while(result.next()) {
console.log(result.getValue('number'));
}
}
Client side GlideRecord – deleteRecord(Function responseFunction)
Löscht den aktuellen Datensatz und ruft nach Abschluss die angegebene Antwortfunktion auf.
| Name | Typ | Beschreibung |
|---|---|---|
| responseFunction | Funktion | Antwortfunktion für den Rückruf. |
| Typ | Beschreibung |
|---|---|
| Keine |
In diesem Beispiel wird ein Datensatz gelöscht und dann die Antwortfunktion „ Antwort “ aufgerufen, um eine Warnmeldung zu protokollieren.
var recordGR = new GlideRecord('incident');
if (recordGR.get('99ebb4156fa831005be8883e6b3ee4b9')) {
recordGR.deleteRecord(response);
}
function response(result) {
alert('Deleted record sys_id: ' + result.getValue('sys_id'));
}
Ausgabe:
Deleted record sys_id: 99ebb4156fa831005be8883e6b3ee4b9
Client side GlideRecord – get(String sys_id)
Führt eine GlideRecord-Abfrage für einen Datensatz mit der angegebenen sys_id aus. Es wird erwartet, dass diese Methode für die Abfrage einzelner Datensätze verwendet wird. Daher wird vor dem Zurückkehren ein next-Vorgang durchgeführt.
| Name | Typ | Beschreibung |
|---|---|---|
| sys_id | Zeichenfolge | Die sys_id des zu suchenden Datensatzes. |
| Typ | Beschreibung |
|---|---|
| Boolean | „True“, wenn ein oder mehrere übereinstimmende Datensätze gefunden wurden. „False“, wenn keine Datensätze gefunden wurden. |
Client side GlideRecord – getEncodedQuery()
Ruft die Abfragebedingung des aktuellen Ergebnissatzes als codierte Abfragezeichenfolge ab.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Zeichenfolge | Codierte Abfragezeichenfolge, die alle Bedingungen enthält, die der Abfrage hinzugefügt wurden. |
Client side GlideRecord – getLimit()
Gibt den Grenzwert für Datensätze zurück, die von der GlideRecord-Abfrage zurückgegeben werden sollen.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Zahl | Grenzwert für Datensätze, die von der GlideRecord-Abfrage zurückgegeben werden sollen. |
Client side GlideRecord – getTableName()
Ruft den Namen der Tabelle ab, die diesem GlideRecord zugeordnet ist.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Zeichenfolge | Der Tabellenname |
var item = new GlideRecord('sc_request');
item.addQuery('sys_id', current.request);
item.query(itemResponse);
function itemResponse(item) {
alert('The table is ' + item.getTableName());
}
Client side GlideRecord – hasNext()
Bestimmt, ob weitere Datensätze im GlideRecord vorhanden sind.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Boolean | „True“, wenn der Abfragesatz mehr Datensätze enthält. |
Client side GlideRecord – insert(Function responseFunction)
Fügt einen neuen Datensatz mit den Feldwerten ein, die für den aktuellen Datensatz festgelegt wurden.
| Name | Typ | Beschreibung |
|---|---|---|
| responseFunction | Funktion | Funktion, die nach dem Einfügen des Datensatzes ausgeführt werden soll. |
| Typ | Beschreibung |
|---|---|
| Zeichenfolge | Sys_id des eingefügten Datensatzes oder NULL, wenn der Datensatz nicht eingefügt wurde. |
var now_GR = new GlideRecord('incident');
now_GR.short_description = 'Learn about GlideRecord';
var recResponse = now_GR.insert(handleResponse);
function handleResponse(recResponse, answer) {
// Answer will be the sys_id of the created record or null
alert('Newly created sys_id is - ' + answer + ' exists');
}
Client side GlideRecord – next()
Geht zum nächsten Datensatz im GlideRecord.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Boolean | „False“, wenn der Abfragesatz keine weiteren Datensätze enthält. |
var rec = new GlideRecord('incident');
rec.query(recResponse);
function recResponse(rec) {
while (rec.next()) {
alert(rec.number + ' exists');
}
}
Client side GlideRecord – orderBy(String column)
Gibt eine orderBy-Spalte an. Kann mehr als einmal aufgerufen werden, um nach mehreren Spalten zu sortieren.
| Name | Typ | Beschreibung |
|---|---|---|
| column | Zeichenfolge | Spaltenname, der zum Sortieren des Ergebnissatzes verwendet werden soll. |
| Typ | Beschreibung |
|---|---|
| void |
function UpdateProjectWBS(project) {
var count = 0;
var child = new GlideRecord('pm_project_task');
child.addQuery('parent', project.sys_id);
child.orderBy('order');
child.orderBy('number');
child.query(childResponse);
g_form.addInfoMessage(count + ' Project Tasks updated');
}
function childResponse(child) {
var len = child.getRowCount().toString().length;
var seq = 0;
while (child.next()) {
count += UpdateProjectTaskWBS(child, 1, ++seq, len, '');
}
}
Client side GlideRecord – query(String name, Function responseFunction, String value)
Führt die Abfrage an den Server für die Tabelle basierend auf dem addQuery()-Filter aus. Diese Methode fragt die GlideRecord-Tabelle sowie etwaige Verweise auf die Tabelle ab.
Führen Sie keine synchronen Abfrageaufrufe durch. Wenn Sie eine Abfrage ohne Antwortfunktion ausführen, wird der Anruf synchronisiert. Das heißt, die Anzeige wartet auf die Abfrageantwort, bevor Sie fortfahren.
| Name | Typ | Beschreibung |
|---|---|---|
| Name | Zeichenfolge | Optional. Der Name eines abzufragenden Felds. |
| responseFunction | Funktion | Die Funktion wird aufgerufen, wenn die Abfrageergebnisse verfügbar sind. |
| Wert | Zeichenfolge | Optional. Der Feldwert, nach dem abgefragt werden soll. Jedes Literalpaar wird als Abfragepaar betrachtet (Feld: Wert). |
| Typ | Beschreibung |
|---|---|
| void |
Das Folgende ist ein einfaches Beispiel mit einer Antwortfunktion.
var rec = new GlideRecord('incident');
rec.query(recResponse);
function recResponse(rec) {
while (rec.next()) {
alert(rec.number + ' exists');
}
}
Das folgende Beispiel zeigt den Unterschied zwischen synchroner und asynchroner Syntax anhand eines asynchronen Beispiels.
// synchronous call syntax (no response function): DO NOT USE
query();
// asynchronous call syntax
// performs query with current conditions, calls responseFunction when done
query(responseFunction)
// synchronous call syntax (no response function): DO NOT USE
// adds "category=hardware" to current query conditions and performs query
query('category', 'hardware')
// asynchronous call syntax
// adds "category=hardware" to current query conditions, performs query, and calls responseFunction when done
query('category', 'hardware', responseFunction)
// asynchronous call example
// adds "user_name=abel.tuter" to current query conditions, performs query, and calls defined response function when done
function onLoad() {
var now_GR = new GlideRecord("sys_user");
now_GR.query("user_name", "abel.tuter", function(now_GR) {
if (now_GR.next()) {
alert("You can access fields by name from the client API, just like in the server API:\n now_GR.name = " + now_GR.name);
alert("You can also access fields using getValue():\n now_GR.getValue(\"email\") = " + now_GR.getValue("email"));
if (now_GR.getDisplayValue) {
alert("In Service Portal, Mobile, and Agent Workspace, you can access a field's display value:\n now_GR.getDisplayValue(\"company\") = " + now_GR.getDisplayValue("company"));
} else {
alert("On the desktop, you cannot access a field's display value, but can get its sys_id:\n now_GR.company = " + now_GR.company);
}
alert("You cannot dot-walk in the client API:\n now_GR.company.name = " + now_GR.company.name);
}
});
}
Client side GlideRecord – setEncodedQuery(String encodedQuery)
Fügt der aktuellen Abfrageklausel eine angegebene codierte Abfragezeichenfolge hinzu.
Mit dieser Methode können Sie im Gegensatz zu anderen clientseitigen addQuery()- Methoden komplexe Filter (codierte Abfragezeichenfolgen) in einem einzelnen Abfrageaufruf angeben. Sobald Sie alle gewünschten Abfragen definiert haben, rufen Sie Client side GlideRecord – query(String name, Function responseFunction, String value) auf, um die angegebene Abfrageklausel (Filter) auszuführen. Weitere Informationen zu codierten Abfragezeichenfolgen finden Sie unter Codierte Abfragezeichenfolgen.
Wenn Sie diese Methode mehrmals aufrufen, bevor Sie die query()-Methode aufrufen, werden die Abfragen mit AND verknüpft.
| Name | Typ | Beschreibung |
|---|---|---|
| encodedQuery | Zeichenfolge | Codierte Abfragezeichenfolge, die der aktuellen Abfrageklausel hinzugefügt werden soll. |
| Typ | Beschreibung |
|---|---|
| void |
var now_GR = new GlideRecord('incident');
now_GR.setEncodedQuery('priority=4^ORstate=3');
now_GR.query(response);
function response(result) {
while(result.next()) {
console.log(result.getValue('number'));
}
}
Client side GlideRecord – setLimit(Number maxQuery)
Legt den Grenzwert für die Anzahl der Datensätze im GlideRecord fest.
| Name | Typ | Beschreibung |
|---|---|---|
| maxQuery | Zahl | Grenzwert für die Anzahl der abzurufenden Datensätze. |
| Typ | Beschreibung |
|---|---|
| void |