Open Source Dokumentenmanagement
Dokumentation

Durchsuchbare Dokumentation aufrufen | Zurück zur Dokumentationsübersicht

Navigation: Dokumentationen agorum core > agorum core JavaScript-API


JavaScript Address API - query

Mit dem Aufruf query bauen Sie eine Solr-Suche auf, die Addressobjekte über den Suchindex findet. Verwenden Sie dazu den Aufbau der smart search, die das Verwenden von regulären Ausdrücken erlaubt.

Verwendung


Binden Sie die Bibliothek stets am Anfang eines Skripts ein:

let address = require('address/objects');
let search = address.query(type, data);

Parameter


type

Stellt folgende Addressobjekte zur Verfügung:

'book', 'organisation', 'department', 'person', 'mailaddresses', 'fullnumbers'


Beispiele

Hinweis: Das System speichert eine Telefonnummer immer in diesem Format im Index.

data

Übergibt Metadaten oder Attribute, die während des Anlegens eines Adressobjekts übergeben werden. Das System sucht die Inhalte der Parameter dann genau in den Attributen oder Metadaten.


Metadaten verwenden

Sie können in den einzelnen Parametern die solr-Syntax (smart search) verwenden:

zip: '73*'
name: "agorum Software GmbH"

Bei Arrays übergeben Sie die internen Werte:

country: 'de' //ist ok
country: 'Deutschland' //ist nicht ok

Ein Datum übergeben Sie als Datum oder als Datumsrange:

dateofbirth: new Date() // Datum

dateofbirth: { start: new Date(), end: new Date() } // Datumsrange

Auch „Subobjekte“ von Adressen gelten und ermöglichen eine Art Hierarchie-Suche:

addressbook
  addressorganisation
    addressdepartment
        person


Beispiele

addressbookIds: [<Objket-ID1>, <Objket-ID2>]

addressorganisation
Sucht nach einer Person oder nach einer Abteilung aus einer Organisation. Der Inhalt ist der Name der Organisation, etwa addressorganisation: 'agorum Software GmbH'.

addressdepartment:
Sucht nach einer Person aus einer bestimmten Abteilung. Der Inhalt ist der Name der Abteilung, etwa addressdepartment: 'Entwicklung'.

Tipp: Sie können in allen Suchen den Parameter rawquery übergeben. In diesem Parameter können Sie die Suche für den gewählten type komplett selbst steuern.

Beispiel: rawquery: 'name:xx*' // Alle Adressobjekte holen, deren Name mit xx beginnt.

Returnwerte

Durch address.query() leiten Sie eine erweiterte Suchanfrage ein und können die Anzahl an Ergebnissen einschränken, ähnlich wie bei der JavaScript-Bibliothek common-objects.


Beispiele

// Liefert ein Ergebnis mit maximal 10 Einträgen, bestehend aus rows und total.
let result = address.query('person', { givenname: 'Rolf' }).limit(10).search('id');

// Liefert ein Array von Objekten mit maximal 10 Einträgen.
let persons = address.query('person', { givenname: 'Rolf' }).limit(10).find();

Je nach Suchanfrage erhalten Sie folgende Objekte zurück:

type === 'book'
--> return D4wAddressBook

type === 'organisation'
--> return D4wAddressOrganisation

type === 'department'
--> return D4wAddressDepartment

type === 'person'
--> return D4wAddressContainer

Eine Person holen Sie per container.d4wAddressPerson und erhalten darüber etwa den fullName.

Beispiele


In folgendem Abschnitt finden Sie Skripte, die Sie herauskopieren und für Ihr Testsystem anpassen müssen, ehe Sie diese ausführen.

let address = require('address/objects');

// Adressbuch mit dem Namen 'xxbook02' holen und den Namen ausgeben
address.query('book', {
  name: 'xxbook02'
}).find().map(m => m.name);


// Alle Adressbücher holen
address.query('book').find().map(m => m.name);


// Alle Adressbücher, die mit xx* starten, holen via rawquery
address.query('book', {
  rawquery: 'name:xx*'
}).find().map(m => m.name);


// Alle Personen suchen und direkt familyName und givenName aus dem Index liefern lassen
address.query('person', {}).search('familyname', 'givenname').rows;


// Verschiedenen Beispiele
address.query('person', {
  // Suche nach Vor- und Nachname
  // givenName: 'petra pau*',
  // familyName: '*demo*',
  
  // Suche nach E-Mail-Adresse
  // mailaddresses: 'anne.klein@agorum.com',
    
  // Suche nach einem Datum
  // dateOfBirth: new Date('1982-06-20T11:00:00.000Z')  
  //
  // dateOfBirth: { 
  //   start: new Date('1982-06-18T11:00:00.000Z'), 
  //   end: new Date('1982-06-20T11:00:00.000Z') 
  // },

  // Suche nach allen Klein in einer bestimmten Organisation und Abteilung
  // familyName: 'Klein',
  // givenName: 'Anne',
  // addressorganisation: 'agorum Software GmbH',
  // addressdepartment: 'Geschäftsleitung',
  
  // 1 Adressbuch durchsuchen
  // addressbookIds: '/agorum/roi/Files/Musterfirma GmbH/Musterfirma GmbH/Kunden/a/ag/agorum Software GmbH/Adressen/xxbook'
    
  // 2 Adressbücher durchsuchen
  // addressbookIds: ['/agorum/roi/Files/Musterfirma GmbH/Musterfirma GmbH/Kunden/a/ag/agorum Software GmbH/Adressen/xxbook',
  //                 '/agorum/roi/Files/Musterfirma GmbH/Musterfirma GmbH/Kunden/xxbook02'],
  // familyName: 'Klein'
  
  // fullnumbers: '+497113461060',
  // title: 'd*'   // Alle Titel, die mit d beginnen
    
})
.find()
.map(m => m.d4wAddressPerson)  // Die Person holen
.map(m => m.fullName);         // Die Daten der Person ausgeben

// Alle Organisationen holen
address.query('organisation').find().map(m => m.name);

// Alle Abteilungen holen und mit der Organisation ausgeben
address.query('department').find().map(m => { return {organisation: m.organisation.name, department: m.name};});

// Alle Personen holen und mit der Organisation und der Abteilung ausgeben
address.query('person').find().map(m => { 
  let org = address.getPersonOrganisation(m);
  let dep = address.getPersonDepartment(m);
  return {organisation: org && org.name || '-', department: dep && dep.name || '-', person: m.d4wAddressPerson.fullName};});

// Person holen und dann die Adressbücher holen, in denen diese enthalten ist
let p = address.query('person', {givenName: 'Test'}).find()[0];
address.getBooks(p).map(m => m.name);