2016-11-20 5 views
0

Ich versuche, eine Chat-App mit Gruppen zu erstellen. Spieler können mehreren Gruppen beitreten. Das Problem, mit dem ich konfrontiert bin, ist, dass ich nicht weiß, wie man einem Spieler mehrere Gruppen hinzufügt. Wenn der Spieler einer Gruppe angehört, könnte ich "Gruppe" als Schlüssel und den Gruppennamen als Wert verwenden, aber bei mehreren Gruppen ist dies nicht möglich. Ich kann nicht mehrere Gruppenschlüssel erstellen, weil sie nicht eindeutig sind. Vielleicht ein Array als Wert für 'Group'? Aber ich glaube nicht, dass das möglich ist. Ich hoffe, dass mir jemand helfen kann. Vielen Dank!Mehrere Gruppen

Antwort

2

Sie können ein Array verwenden, aber es ist besser, ein Objekt mit Firebase-generierten Schlüsseln zu verwenden. Siehe die vorgeschlagene Datenbankstruktur unten:

"root": { 
    "users": { 
     "$userId": { 
      ... 
      "groups": { 
       "$groupId": true 
      } 
     } 
    }, 
    "groups": { 
     "$groupId": { 
      ... 
     } 
    } 
} 

Ich habe nicht für iOS codiert, daher ist das folgende Beispiel in JavaScript. Mit der obigen Datenbankstruktur können Sie Benutzer zu Gruppen hinzufügen und lesen, in welchen Gruppen sich der Benutzer befindet:

var currentUserId = ?; // The userId of the logged in user 
var currentUserGroupsRef = rootRef.child('user').child(currentUserId).child('groups'); 

// Join group 
var groupId = ?; // The id of a group that the user joins 
currentUserGroupsRef.child(groupId).set(true); // Add the groupId to the users groups, letting firebase generate an Id 

// Read groups 
currentUserGroupsRef.on('value', (snap) => { 
    if (!snap.val()) { 
     var userGroupIds = []; // user is not in any groups, empty array of groupIds 
     return; 
    } 
    var userGroupIds = Object.keys(snap.val()); // Array of groupIds 
}); 
+0

Vielen Dank für die schnelle Antwort! Ich werde dich wissen lassen, ob es funktioniert hat! –

+0

Ich habe es nicht in die Antwort aufgenommen, weil es ein bisschen außerhalb dessen ist, wonach Sie gefragt haben, aber ich schlage vor, dass Sie auch dieselbe Methode für Gruppen verwenden, um zu verfolgen, welche Benutzer darin enthalten sind. – ArneHugo

+1

Es hat funktioniert, vielen Dank! –