2016-05-01 2 views
0

Ich habe vor kurzem angefangen mit Firebase zu arbeiten und in einer der Demo-Apps habe ich etwas Zunder implementiert. Grundsätzlich können Sie Benutzer streichen und eine nach swiping ich die Speicherung der Daten in folgendem Format/Pfad:Direktnachrichten Chat mit Firebase - Datenstruktur?

matches/randomeFirebaseID()/{ 
userid: true 
otherUserid: true 
} 

Das ziemlich nett ist, sie zu fragen wieder, aber wie kann ich eine Sicherheitsregel zu machen, die nicht erlaubt solche Einträge duplizieren. Ist das mit Sicherheitsregeln überhaupt möglich? Oder sollte ich die Daten in einer anderen Form strukturieren? Es wäre möglich, sie einfach vorher abzufragen und zu prüfen, ob eine Übereinstimmung bereits existiert, aber das braucht etwas mehr Zeit, die ich nicht verschwenden möchte.

Danke für Ihre Hilfe!

+0

Da Ihr Elternknoten zufällig generiert wird, wäre es niemals ein Duplikat. Beziehen Sie sich auf den Benutzer-ID-Knoten? Im Allgemeinen sind Firebase-Regeln nicht zum Filtern von Daten vorgesehen. Bitte lesen Sie [Sichern Ihrer Daten] (https://www.firebase.com/docs/security/guide/securing-data.html) und insbesondere den Abschnitt "Vorhandene Daten im Vergleich zu neuen Daten" und vor allem den Abschnitt "Regeln sind keine Filter" . Ihre beste Wette ist eine Abfrage, die sehr schnell ist und nicht wirklich einen Overhead zum Sprechen bringt. – Jay

+0

Hey Jay, ja, ich will keine doppelten Übereinstimmungen für die gleichen 2 Jungs. Ich war besorgt, dass es ein wenig wäre und nicht "Best Practice", aber ich werde es versuchen! Vielen Dank! –

+0

Es klingt wie Sie den Schlüssel basierend auf den zwei Uids generieren sollten. Siehe meine Antwort hier: http://stackoverflow.com/questions/33540479/best-way-to-manage-chat-channel-in-firebase/33547123#33547123 –

Antwort

3

Für alle, die interessiert sind. Die Lösung war ziemlich einfach, gut wie immer :)

Ich verwendete eine Mischung aus beiden Benutzer-IDs als Schlüssel einer Konversation. Und um zu wissen, was zuerst geht, habe ich sie einfach bestellt, so sind sie immer auf die gleiche Weise angeordnet.

Beispiel: userid1: abcde userid2: zudfg

so das Gespräch ID wäre: abcdezudfg

, dass es ziemlich einfach macht es für den Zugriff auf oder sogar ein Gespräch zwischen diesen Benutzer bereits Wetter überprüfen existieren oder nicht.

Ich hoffe, das hilft.