2016-11-20 2 views
0

그룹으로 채팅 앱을 만들려고합니다. 플레이어는 여러 그룹에 가입 할 수 있습니다. 내가 직면하고있는 문제는 플레이어에게 여러 그룹을 추가하는 방법을 모른다는 것입니다. 플레이어가 1 그룹에 합류했다면 '그룹'을 키로 사용하고 그룹 이름을 값으로 사용할 수 있지만 여러 그룹으로 사용할 수는 없습니다. 고유 한 것이 아니기 때문에 여러 '그룹'키를 만들 수 없습니다. 어쩌면 '그룹'에 대한 가치로 배열? 그러나 나는 이것이 가능하다고 생각하지 않는다. 누군가가 나를 도울 수 있기를 바랍니다. 감사!여러 그룹

답변

2

배열을 사용할 수 있지만, firebase 생성 키가있는 객체를 사용하는 것이 좋습니다. 아래 제안 된 데이터베이스 구조를 참조하십시오.

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

다음은 JavaScript로 작성된 예제입니다. 위의 데이터베이스 구조를 사용하면 그룹에 사용자를 추가하고 사용자가 다음과 같은 그룹을 읽을 수 있습니다.

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

빠른 답변을 보내 주셔서 감사합니다. 작동하는지 알려 드리겠습니다. –

+0

당신이 요구 한 바깥에 있기 때문에 대답에 포함시키지 않았지만 그룹에 동일한 방법을 사용하여 어떤 사용자가 속해 있는지 추적 할 것을 제안합니다. – ArneHugo

+1

정말 고마워요. –