2016-11-16 4 views
0

In meiner Firebase-Datenbank verwende ich einen zusammengesetzten Schlüssel als ID für Eins-zu-Eins-Konversationen im folgenden Format 'UID1_UID2' lexikographisch sortiert.Firebase iOS - Abfrage mit einem Teil des Compound-Schlüssels

Wenn ich alle Konversationen über den iOS-Client für einen bestimmten Benutzer (UID1) laden möchte, kann ich Firebase abfragen, wenn der zusammengesetzte Schlüssel aus zwei kombinierten Benutzer-IDs besteht.

Antwort

0
queryStartingAt("UID1_").queryEndingAt("UID1_") 

wird alle Konversationen zurückgeben UID1_ gestartet.

Sie sollten Ihre Daten als

conversation: UID1_UID2 
0

Verbindung Tasten sind nicht so groß von einer Idee werden zu strukturieren. Bitte konsultieren Sie this part of the documentation, das erklärt, wie man eine Chat-/Konversationsstruktur am besten modelliert.

Relevante Auszug zeigt, wie Daten für Chats zu strukturieren:

{ 
    // Chats contains only meta info about each conversation 
    // stored under the chats's unique ID 
    "chats": { 
    "one": { 
     "title": "Historical Tech Pioneers", 
     "lastMessage": "ghopper: Relay malfunction found. Cause: moth.", 
     "timestamp": 1459361875666 
    }, 
    "two": { ... }, 
    "three": { ... } 
    }, 

    // Conversation members are easily accessible 
    // and stored by chat conversation ID 
    "members": { 
    // we'll talk about indices like this below 
    "one": { 
     "ghopper": true, 
     "alovelace": true, 
     "eclarke": true 
    }, 
    "two": { ... }, 
    "three": { ... } 
    }, 

    // Messages are separate from data we may want to iterate quickly 
    // but still easily paginated and queried, and organized by chat 
    // conversation ID 
    "messages": { 
    "one": { 
     "m1": { 
     "name": "eclarke", 
     "message": "The relay seems to be malfunctioning.", 
     "timestamp": 1459361875337 
     }, 
     "m2": { ... }, 
     "m3": { ... } 
    }, 
    "two": { ... }, 
    "three": { ... } 
    } 
} 
+0

sah ich diese dann las ich diese http://stackoverflow.com/questions/33540479/best-way-to-manage-chat-channels -in-firebase in Bezug auf eins zu eins Struktur. Sieht so aus, als müsste ich einen Index für Ihren Ansatz hinzufügen, um auf die Chats zuzugreifen, zu denen der Benutzer gehört, also werde ich diesen Ansatz ausprobieren. – jeh

+0

Das Problem mit zusammengesetzten Schlüsseln ist, dass sie - vom Design her - sehr einschränkend sind. Nämlich: A <> B! = B <> A, und sie skalieren nicht über zwei Teilnehmer hinaus, wenn Sie irgendwann herausfanden, dass Sie sie brauchen. Sicher, sie sind pragmatisch und werden Sie schneller in Gang bringen, ich empfehle Ihnen jedoch nicht, sich so zu beschränken – pkluz