Designdokumente in CouchDB

Bei den Designdokumenten oder Designdokumenten in CouchDB handelt es sich um eine spezielle Art von Dokumenten, in die wir Anwendungscode einbinden können. Dies ist dank der Strukturierung unserer Datenbank- Engine möglich, die es uns ermöglicht, auf eine API zuzugreifen und damit alle Funktionen auszuführen die notwendigen Maßnahmen.

Die Standardsprache, die wir für diese Art von Dokumenten verwenden können, ist JavaScript. Dies macht es ideal für vollständige Anwendungen, wenn wir auf Technologien wie Node.js und Frameworks für das Front-End wie AngulaJS, Backbone.js und ähnliche zurückgreifen .

Anforderungen

– Para poder ejecutar este tutorial necesitamos en primer lugar una instalación de CouchDB , para los primeros pasos con la misma se puede dar un vistazo al siguiente tutorial . 1 – Um dieses Tutorial ausführen zu können, benötigen wir zunächst eine CouchDB- Installation, für die ersten Schritte schauen wir uns das folgende Tutorial an . Diese Installation muss über Berechtigungen verfügen, um in unserer Benutzersitzung ausgeführt werden zu können. Wenn die Installation einen Benutzer hat, müssen wir das Kennwort kennen, um Dokumente erstellen zu können.

– También vamos a necesitar la herramienta cURL para enviar peticiones vía HTTP y así poder hacer uso de la API de CouchDB . 2 – Wir benötigen außerdem das cURL- Tool, um Anforderungen über HTTP zu senden und damit die CouchDB- API verwenden zu können .

– Por último necesitamos un editor de textos para poder construir los archivos JSON que utilizaremos, por supuesto con los respectivos permisos para guardar en disco. 3 – Schließlich benötigen wir einen Texteditor zum Erstellen der JSON- Dateien, die wir natürlich mit den entsprechenden Berechtigungen zum Speichern auf der Festplatte verwenden werden.

In diesem Lernprogramm wird Windows 7 verwendet, sodass möglicherweise einige Befehle vorhanden sind, deren Entsprechung in einem anderen Betriebssystem erforderlich ist.

Dokumente modellieren

Wenn wir mit CouchDB arbeiten, müssen wir Dokumente erstellen, die einen Sinn für den Endbenutzer haben, dh etwas, das gezeigt werden kann und eine Bedeutung hat, ohne viel tun zu müssen.

Virtuelle Dokumente
Diese Art von Dokumenten wird als virtuelle Dokumente bezeichnet und ermöglicht es uns, in einer einzigen Anforderung oder Anforderung alle erforderlichen Daten ohne Probleme zu laden. Es wird im Allgemeinen verwendet, wenn wir verschiedene Arten von Datensätzen in einer einzelnen Abfrage mischen möchten, z. B. einen Artikel in einem Blog und seine verschiedenen Kommentare.

Es gibt einen anderen Dokumenttyp namens Ereignisprotokoll , den wir manchmal verwenden können, um Daten von einem Benutzer einzugeben, und für diesen benötigen wir zusätzliche Überprüfungen, obwohl er auch verwendet werden kann, wenn eine Aufgabe asynchron ausgelöst werden muss.

Der Abfrageserver
Der Abfrageserver von CouchDB ist in JavaScript erstellt, sodass die Verwendung dieser Sprache standardmäßig ohne zusätzliche Konfiguration möglich ist. Es gibt jedoch nur Implementierungen in anderen Sprachen, um diesen Server zu betreiben und die Designdokumente zu erstellen um eine Konfiguration über einen JSON einzugeben.

Unser erstes Designdokument

In einem Designdokument können wir die sogenannten Ansichten und Shows definieren, von denen jede eine spezielle Art der Anzeige von Daten enthält. Diese werden später erläutert, und wir konzentrieren uns im Moment auf die Erstellung unseres ersten Dokuments.

See also  Bild als Passwort speichern - Windows 8

Wir müssen eine Datenbank auf unserem Server CouchDB erstellen und darin ein oder mehrere Dokumente hinzufügen. In unserem Beispiel haben wir ein Rezept erstellt und enthalten ein Titelfeld und ein anderes Feld namens Zutaten.

Diese Datenbank sieht folgendermaßen aus:

design-documemtos-couchdb.jpg
Sobald wir Daten in unsere Datenbank geladen haben, müssen wir das Dokument erstellen. Dazu erstellen wir eine Datei mit dem Namen in unserer case recipes-couch.js und platzieren den folgenden Code:

 {"language": "javascript", "views": {"all": {"map": "function (doc) {iss (doc.title, doc)}"}, "by_title": {"map": "function (doc) {if (doc.title! = null) emit (doc.title, doc)}"}, "by_ingredients": {"map": "function (doc) {if (doc.ingredients! = null ) emit (doc.ingredients, doc)} "}}," shows ": {" recipes ":" function (doc, req) {return '<h1>' + doc.title + '</ h1>'} " }} 

Dies ist nur ein einfacher JSON, bei dem wir zuerst die Sprache als JavaScript definieren und dann ein Element namens Ansichten erstellen, in dem wir drei Ansichten erstellen, eine allgemeine, eine nach Titel und eine nach Zutaten. Schließlich erstellten wir eine Show, in der wir den Titel unseres Rezepts zeigten.

JSON validieren
Es ist wichtig zu beachten, dass wenn unser JSON nicht die richtige Konfiguration hat, wir einen Fehler vom CouchDB- Server bekommen und wir nicht in der Lage sind, unsere Anweisungen auszuführen. Aus diesem Grund ist es wichtig zu überprüfen, ob unser JSON gültig ist. Dafür gibt es einige Online-Tools wie jsonlint .com

Jetzt müssen wir diese Datei mit cURL an unseren Server CouchDB übergeben , da diese Art von Dokument “speziell” ist und wir nicht zulassen können, dass der Server einen zufälligen Namen vergibt. Aus diesem Grund müssen wir stattdessen die POST- Methode verwenden die PUT- Methode, mit der neue Elemente erstellt werden.

See also  HTML5 - DOM-Metadaten

Dann müssen alle unsere Konstruktionsdokumente innerhalb des Routendesigns unserer Datenbank liegen und danach den entsprechenden Namen. Mal sehen, wie wir das gespeicherte Dokument auf unseren Server übertragen können.

Führen wir zunächst Folgendes in der Konsole aus:

 curl.exe -X PUT -d @Dateiname 'http://127.0.0.1:5894/basedates/_design/name 

Dies ist die Grundform für die Aufnahme des Dokuments in unsere Datenbank . Natürlich ändert sich die Ausführung von cURL in Abhängigkeit von unserem Betriebssystem, und die Verbindung mit dem Server hängt davon ab, ob wir die Benutzerauthentifizierung aktiviert haben.

Hier ist es wichtig hervorzuheben, dass dem Namen unserer Datei ein @ vorangestellt werden muss, da cURL andernfalls direkt auf den Inhalt der Datei wartet und es aus offensichtlichen Gründen der Benutzerfreundlichkeit nicht angebracht ist, den JSON direkt in die Konsole zu schreiben.

In unserer Testumgebung wäre das Folgende:

 curl.exe -X PUT -d recipes-couch.js http: // root: [email protected]: 5984 / recipes / _design / recipes 

Wo es ausgeführt werden soll, wird in unserer Konsole folgendermaßen angezeigt:

design-documemtos-couchdb-2.jpg

Wie wir sehen, haben wir bereits unser erstes Dokumentendesign in CouchDB erstellt . Wenn wir Futon betreten, können wir sehen, wie unser Designdokument bereits vorhanden ist, und uns sogar die Details der verschiedenen Ansichten und Shows anzeigen, die wir haben:

design-documemtos-couchdb-3.jpg
Wenn wir das Dienstprogramm für all das, das wir erstellen, auf irgendeine Weise sehen möchten, müssen wir es nur über den Browser eingeben und mit der folgenden Struktur können wir die Abfrage für unsere Show durchführen , die uns ein Ergebnis liefert:

 http: // localhost: 5984 / NombreBaseDatos / _design / NombreDocumentoDesign / _show / NombreShow / idDocumento 

Mal sehen, was sich aus der Abfrage ergibt, die wir in unsere Testumgebung eingefügt haben:

design-documemtos-couchdb-4.jpg
Wie wir sehen können, ist es recht einfach, wenn wir uns die Definition der Shows in unserer JSON- Datei ansehen, werden wir feststellen, dass wir den Titel nach einigen <h1> -Tags drucken, sodass die Antwort in unserem Browser als HTML- Dokument interpretiert wird.

Wir können dasselbe mit Ansichten oder Ansichten tun, nur dass wir diesmal anstatt der ID des spezifischen Dokuments die Namen der Ansichten verwenden, sehen wir uns Folgendes an:

See also  Python - Remote-Dateien

design-documemtos-couchdb-5.jpg
Wir bemerken, dass wir in diesem Fall einfach den Namen unserer Ansicht durch_ingredientes angegeben haben , wodurch wir ein Ergebnis in JSON erhalten , aber dies hat auch eine andere Funktion und das heißt, wir können suchen, da wir die Indizes erstellt haben, wodurch wir etwas mehr Leistung erzielen unsere Datenbank- Engine. Da CouchDB nur beim ersten Mal alle Dokumente durchläuft, ist diese Verarbeitung für Anrufe oder nachfolgende Abfragen nicht erforderlich.

Die Art und Weise, wie wir Anfragen stellen können, erfolgt über die sogenannten Schlüssel oder Schlüssel , und dies kann aus unserer Sicht direkt in der Abfrage über die URL erfolgen , sodass wir Bereiche, genaue Wörter, eindeutige Werte usw. festlegen können.

Einige Operatoren, die wir verwenden können, sind:

Startschlüssel
Stellt den Startwert für die Suche in der Ansicht dar.

endkey
Stellt den Endwert zum Stoppen der Suche in der Ansicht dar.

Schlüssel
Stellt einen genauen Suchwert in der Ansicht dar.

Lassen Sie uns unten sehen, wie wir ein kleines Beispiel daraus machen können. Wir werden das Rezept ausfindig machen, das Knoblauch als Zutat enthält. In unserem Fall sollten wir das Rezept “Salsa Pesto” erhalten.

design-documemtos-couchdb-6.jpg
Wir haben zu einem einzigen Dokument gefiltert, von den beiden, die wir ursprünglich in unsere Datenbank geladen hatten. Dies gibt uns nur einen kleinen Anhaltspunkt dafür, wie leistungsfähig dieses Tool ist.

Wenn wir einen Endschlüssel hinzufügen, können wir durch Hinzufügen eines Bereichs eine breitere Filterung vornehmen. Dies ist die Aufgabe, die ihnen überlassen ist, damit sie nachforschen und Fehler machen können, wodurch die Beständigkeit im Gedächtnis von allem, was gelernt wurde, gefördert wird.

Damit haben wir dieses Tutorial abgeschlossen, da wir sehen, dass das Designdokument- Tool sehr leistungsfähig ist, weil es uns nicht nur erlaubt, Ansichten und Shows zu erstellen, sondern auch, dass diese eine weitaus fortgeschrittenere JavaScript- Verarbeitung haben können, als wir es hier behandelt haben , Operationen im DOM usw., alles, was wir mit der Sprache erreichen können, die wir effektiv in CouchDB integrieren können. Damit ist die Erstellung von Anwendungen mit nur JavaScript sehr gut möglich.

administrator

Leave a Reply

Your email address will not be published. Required fields are marked *