vorba.ch

Opinions

von Paul Vorbach, 08.08.2012

Die Kommentarfunktion hier läuft überraschend gut. Per JavaScript wird für jeden Artikel ein Request gestartet, der die Kommentare als JSON-Dokument zurückliefert. Dieses wird anschließend geparst und ins HTML eingebaut, sodass die Kommentare angezeigt werden können. Im Prinzip wie bei Disqus mit dem Unterschied, dass die Kommentare nicht bei einem anderen Dienst landen. Sogar Pingbacks funktionieren.

Den Code dazu kann man sich im zugehörigen Github-Repository anschauen1.

Trotzdem bin ich mit der Kommentarfunktion, wie sie jetzt ist, unzufrieden. Der Grund dafür liegt in der Verwendung der Datenbank. Durch die Verwendung von MongoDB als Datenspeicher liegen die Kommentare zu den Artikeln nicht im Git-Repository des Blogs und werden dadurch auch nicht versioniert. Für Backups muss ich separat sorgen.

In den nächsten Tagen werde ich versuchen, ein neues Kommentar-Modul für das Blog zu schreiben, welches die Kommentare in Git versioniert. Der Aufbau ist recht einfach:

Ein Problem stellt sich dabei jedoch:

Was geschieht, wenn zufällig zwei Nutzer mehr oder weniger gleichzeitig einen neuen Kommentar abschicken? Ein Kommentar könnte verloren gehen, wenn von zwei Seiten aus versucht wird, die Datei zu verändern.

Dazu bräuchte ich wohl eine Warteschlange auf dem Server, die sicherstellt, dass mehrere Kommentare immer korrekt verarbeitet werden. Mal sehen, ob das so gut funktioniert, wie ich mir das vorstelle.

Dann will ich mich mal ans Werk machen. Die Entwicklung kann selbstverständlich bei Github verfolgt werden.


  1. Der Kitt zwischen dem Node.js-Modul und dem Server-Backend ist hier zu finden.