Promoting (Teil 4): Date nach Firestore schreiben - Eine Android App für die Steem Blockchain - Teil #25

in #development7 years ago

Nachdem wir nun schon Daten aus Cloud Firestore lesen können, möchten wir auch welche schreiben. Dies wird dann am Ende für die Promotions benötigt. Aber bevor ich damit beginne, möchte ich zunächst nochmal auf die Zugriffsregeln eingehen.

Schritt 1: Richtige Zugriffskonfiguration

Zum Schreiben muss die Datenbank richtig konfiguriert werden. In der Standardeinstellung werden Schreibvorgänge nämlich standardmäßig blockiert. Für Tests kann man ruhig alle Schreibvorgänge zulassen, sobald man die App aber veröffentlicht, sollte man einen App-Key einrichten und nur mit diesem Key gesendete Schreibaufträge zulassen. Um aber alle Schreibvorgänge zuzulassen muss man vom Startbildschirm auf "Database">"Regeln" klicken. Dort findet man im "Texteditor" folgende Zeile:

allow write: if false;

Sie blockiert alle Schreibvorgänge. Das "false" muss zum erlauben solcher durch ein "true" ersetzt werden. Es gibt auch noch weiter Konfigurationsmöglichkeiten, dazu empfehle ich die Cloud Firestore Dokumentation. Richtig konfiguriert sieht der Regelblock dann so aus:
correctauth.PNG
Nun sollten Schreibvorgänge problemlos möglich sein.

Schritt 2: Die writePromotion Methode

Um nun Daten nach Firestore zu schreiben, verwende ich den gleichen Trick wie beim Lesen: Die automatische Konvertierung von Objekt zu Datenbank-Objekt. Das Objekt ist das gleiche wie auch schon im letzten Post. Der Schreibvorgang funktioniert so: Über das Instance-Objekt von Firestore wird auf der Collection ("Promotions") die "add" Methode aufgerufen, die als Parameter das zu schreibende Objekt übernimmt. Diese erzeugt ein neues Dokument in der Datenbank, welches exakt die Attribute des übergebenen Objektes wiederspiegelt. Danach füge ich noch einen onComplete Listener hinzu, um bei einem Fehler eine Fehlermeldung angezeigt zu bekommen. Implementiert sieht diese Methode so aus:
method.PNG
Nun steht die Methode. Ich rufe sie aus der MainActivity aus auf und übergebe ein neues Objekt der Klasse PromotedPost, welches im Prinzip meinen letzten Post wiederspiegelt. In der Datenbank ist bereits mein vorletzter Post enthalten.

Schritt 3: Der Test

Nun ist es an der Zeit, die Methode zu testen. Nachdem ich wie schon unter Punkt 2 beschrieben den Methodenaufruf eingebaut habe, starte ich die Anwendung und schaue auf der Firebase Konsole nach, welche Daten sich in der Datenbank befinden. Neben dem bereits im letzten Teil manuell angelegten Eintrag befindet sich nun ein Neuer, der exakt die beim Aufruf übergebenen Daten gespeichert hat:
success.PNG
Das Schreiben hat also funktioniert. Im nächsten Teil möchte ich dann mit der Promoted-Ansicht aus dem Navigation Drawer weitermachen.


Wenn dir dieser Post gefallen hat und du die Reihe unterstützen möchtest, würde ich mich über Upvotes freuen.