Thomas Kramer

IT-COW | All posts tagged 'CouchDB'

Entwicklung eines administrativen Webfrontends mittels Node.js und Express, Javascript und JQuery

By Administrator at Juli 01, 2015 22:24
Filed Under: Projekte, Studium

Ergänzend zu meiner Android-App für die Eingabe und den Abruf von Supportdaten für Consultants von Softwarefirmen habe ich ein Webfrontend entwickelt um die Datenbank administrieren zu können. Nur Benutzer eines Admin-Accounts der zugrundeliegenden CouchDB-Datenbank können sich in das Webfrontend einloggen.

 

Die Rollenverteilung fällt dabei so aus dass zunächst der Administrator über das Webfrontend grundlegende Daten anlegt. Das Anlegen und Ändern von Datenbank-Benutzern, Software-Produkten und zugehörigen Funktionen ist seine Aufgabe; außerdem kann er Einträge der Consultants löschen und eine Nutzungsstatistik abfragen.

 

Mit der von dem Administrator festgelegten Datenbank-Accountdaten und der Android-App können sich die Consultants vor Ort über das Internet in die Datenbank einloggen und vorhandene Daten einsehen sowie neue Anforderungen, Programmfehler und FAQ-Einträge zu den existierenden Software-Produkten einpflegen.

 

Technisch gesehen wurde das Webfrontend mittels des severseitigen Javascript-Frameworks Node.js und des darauf basierenden Webframeworks Express realisiert. Es stellt eine Single Page-Webanwendung dar, bei der die Inhalte dynamisch mittels Javascript und JQuery geleert und wieder gefüllt werden. Die Verbindung zur CouchDB-Datenbank geschieht über die eingebauten REST-Schnittstellen des Node.js-Frameworks.

 

Das Framework Node.js arbeitet grundsätzlich asynchron, es wartet daher nicht bis ein Vorgang erledigt ist. Grundsätzlich kann z. B. das Speichern oder die Verarbeitung von Eingabedaten asynchron geschehen, aber bei der Anzeige von Daten muss natürlich weiterhin auf das Ergebnis der Datenbank gewartet werden. Dieses Problem konnte ich lösen.

 

Eine weitere Herausforderung bestand darin die Datenbank dahingehend zu erweitern gewissermaßen Joins in einer NoSQL-Datenbank wie CouchDB einzubinden. Dies ist tatsächlich problemlos möglich, wenn auch zunächst etwas ungewohnt wenn man relationale Datenbanken gewöhnt ist.

 

Dadurch konnte ich mehrere Dokumente miteinander über eine ID verknüpfen und in einer einzelnen Tabelle anzeigen lassen - auch wenn es keine festen Tabellenstrukturen bei NoSQL-Datenbanken gibt speichert man trotzdem nicht alles in einem einzelnen Datensatz, schon allein um Redundanzen zu vermeiden.

 

Nachfolgend zeige ich einige Bilder des Projekts:

 

s1

 

s2

 

s3

 

s4

 

s5

 

 

Auch wenn ich Android-Programmierung nicht direkt als schwierig bezeichnen würde, habe ich für die App doch deutlich länger Zeit benötigt als für dieses Webfrontend. Einer der Gründe ist dass für die Node.js-Programmierung ein einfacher Texteditor anstelle einer ausgewachsenen Entwicklungsumgebung ausreicht.

 

Jeder Programmierer sollte einmal ein Webfrontend programmiert haben, weil Webtechnologien immer mehr Einsatz finden. Im Studium damals wurden jedoch Java Server Faces bevorzugt, welche einen weit verbreiteten Standard darstellen.

 

Falls Interesse besteht kann ich gegebenenfalls den Quellcode zur Verfügung stellen.

   

Monats-Liste