Durchsuchbare Dokumentation aufrufen | Zurück zur Dokumentationsübersicht
Navigation: Dokumentationen agorum core > agorum core JavaScript-API
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.
Binden Sie die Bibliothek stets am Anfang eines Skripts ein:
let address = require('address/objects'); let search = address.query(type, data);
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.
Ü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.
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.
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);