2016-05-18 15 views
1

Ich implementiere eine App für iOS, die auf Ereignissen basiert. Diese Ereignisse haben eine startTime und endTime. Sie stehen dem Benutzer nur in diesem Intervall von startTime bis endTime zur Verfügung. So funktioniert es: Ein Benutzer kann ein Ereignis erstellen und in der Firebase-Datenbank veröffentlichen (das Ereignis enthält startTime und endTime). Wenn also die aktuelle Zeit mit diesem Intervall übereinstimmt, kann der Benutzer die aktuellen Ereignisse sehen, die gerade ausgeführt werden. Wenn jedoch die Endzeit eintrifft, wird das Ereignis aus der Datenbank gelöscht, und der Benutzer kann nicht mehr darauf zugreifen.Wie lösche ich Daten aus Firebase, die älter als 6 Stunden in einer iOS App sind?

Die Sache ist, ich weiß nichts über Javascript und wie es auf einer iOS-App mit Firebase funktionieren könnte. Ich denke (durch meine Nachforschungen), dass ich etwas brauche, um die Datenbank auf alte Ereignisse zu überprüfen, und ich habe keine Ahnung, wie ich das umsetzen soll.

Wie funktioniert diese Überprüfung in einer iOS App mit Firebase? Es tut mir leid, wenn ich nicht klar war

Antwort

1

Ich musste etwas ähnliches implementieren. Hier ist die Aufschlüsselung, wie Sie dies mit Firebase erreichen können.

  1. Firebase nicht serverseitige Logik, so dass Sie nicht für die Sie sich verlassen können die Daten auf Firebase zu löschen (im Fall der Veranstaltung Besitzer die App beendet, Telefon auszuschalten, etc).

  2. Verwenden Sie FirebaseServerValue.timestamp, um Ihrem Ereignis einen Standardzeitwert zuzuweisen. Dies ist Ihre Konstante, um einem Benutzer das Anzeigen eines Ereignisses zu erlauben oder zu verweigern.

  3. Verwenden Sie if/else Anweisungen, um die Sichtbarkeit des Ereignisses nur zwischen startTime und endTime (auch als Zeitstempel festgelegt) zu steuern.

  4. Da Sie die serverseitige Logik nicht zum Löschen der Daten verwenden können, müssen Sie den Client verwenden, um Daten aus Firebase zu entfernen. Verwenden Sie die if/else-Logik von # 3, um festzustellen, ob Ihr aktueller Zeitstempelwert hinter dem endTime-Zeitstempel liegt. Wenn dies der Fall ist, entfernen Sie diesen Datenabschnitt aus Firebase.

Hoffe, das hilft.

+0

Vielen Dank für die schnelle Antwort! Ich werde das versuchen –

3

Die akzeptierte Antwort ist in Ordnung, aber Sie haben eine "richtige" Option.

Sie können Google App Engine verwenden und ein Backend schreiben, das ein Skript alle X Stunden ausführt, um alte Einträge zu löschen (seien Sie vorsichtig mit TZs in Ihren Zeitstempeln, stellen Sie sicher, dass alles konsistent ist). Je nachdem, ob Sie der Meinung sind, dass Sie in Zukunft andere Verarbeitungserfordernisse haben, kann es sich lohnen, diese Route zu gehen, da Sie sonst eher eingeschränkt sind, was Sie tun können (Sie müssen die Client-Apps durchlaufen und Sicherheit und Zuverlässigkeit haben) und Leistungsprobleme, die möglicherweise von Ihrem Anwendungsfall abhängen).

Dafür benötigen Sie ein vollwertiges Google App Engine-Konto (Google Cloud) und wahrscheinlich einen höheren Preis, je nach Nutzung.

Einzelheiten, wie das hier sehen nähern: https://cloud.google.com/solutions/mobile/firebase-app-engine-android-studio

Von dort können Sie auch die schöne Option Diagramme sehen, dass sie zusammen zu visualisieren, wie Sie Ihre Client-Anwendungen + + app Feuerbasis der Arbeit des Motors gemacht habe. https://cloud.google.com/solutions/mobile/mobile-app-backend-services

Sie sollten weiterhin die clientseitige Filterung von Ereignissen implementieren, da das Löschen alter Ereignisse nicht in Echtzeit erfolgt.

BTW Google buchstäblich JETZT JETZT hochgeladen fancy neue Tutorials (Codelabs) ersetzt alle alten Unterlagen Firebase. Ich vermute, dass sie sehr bald auch ein Codelab mit App-Engine-Integration hinzufügen werden (ich konnte noch keinen finden). In der Zwischenzeit können Sie die oben aufgeführte Version von googles offizieller Cloud-Site sehen.

Viel Glück.

+0

Hey Creos! Ja, ich habe gerade alle Uploads für Firebase auf Codelabs bemerkt - wahrscheinlich auf einem Teil des neuen Firebase 3.2.0. Gute Vorschläge und in der Tat richtiger. Ich hatte mir gedacht, dass der Schnellschreibfall den aktuellen Fall ohne Verwirrung abdecken würde. Wie auch immer, Upvoted, da dies so richtig ist wie es geht. –

+0

Danke @JulianLee, das ist nett von dir zu tun/sagen! – Creos

+1

Wow, danke für diese Antwort. Und ja, ich fühle mich verpflichtet, serverseitigen Code jetzt zu verwenden, und ich muss es implementieren. Danke für den Rat, ich komme dazu. –

Verwandte Themen