예를 들어 채팅방의 두 멤버입니다. 또는 현재 사용자가이를 따르고 있습니다.
그래서 이론적 사용자 노드
users
alovelace
followed_by
bill: true
frank: true
in_chat_room: room_42
location: France
ghopper
followed_by
jay: true
in_chat_room: room_27
location: USA
eclarke
followed_by
frank: true
in_chat_room: room_42
location: Canada
일부 대화방
chat_rooms
room_27
ghopper: true
room_42
lovelace: true
eclarke: true
let usersRef = self.myRootRef.childByAppendingPath("users")
usersRef.queryOrderedByChild("in_chat_room").queryEqualToValue("room_42")
.observeEventType(.Value, withBlock: { snapshot in
for child in snapshot.children {
let location = child.value["location"] as! String
print(location) //prints France and Canada
}
})
채팅방 (42) (난봉꾼, eclarke)에서 사용자의 상세한 사용자 노드를 얻으려면
프랭크가 다음 사용자를 얻으려면 (lovela CE, eclarke) : 노드 키의 같은 사용자 이름을 사용하는 것은 일반적으로 좋은 생각이라고
let usersRef = self.myRootRef.childByAppendingPath("users")
usersRef.queryOrderedByChild("followed_by/frank").queryEqualToValue(true)
.observeEventType(.Value, withBlock: { snapshot in
for child in snapshot.children {
let userName = child.key as String
print(userName)
}
})
주 - 그들은 자신의 UID로 저장해야합니다.
또한 가진 노드 등을 관찰 변경하는 데 유용 할 수 있습니다 서로를 참조, 우리가 정말 chat_rooms 노드와 아무것도하지 않았지만 관계를 유지하기 위해주의
편집 님의 질문에 답변
각 사용자들은 다음과 같다 대신, alovelace 빌과 솔직한 다음하는 사용자에게이 구조
users
alovelace
following_user
bill: true
frank: true
in_chat_room: room_42
location: France
을 다음 누가 누구를 보여주기에 대한 소감, 여기에 구조입니다.
는 솔직한 다음 모든 사용자를 얻으려면 : 귀하의 코멘트에서
let usersRef = self.myRootRef.childByAppendingPath("users")
usersRef.queryOrderedByChild("following_user/frank").queryEqualToValue(true)
.observeEventType(.Value, withBlock: { snapshot in
for child in snapshot.children {
let userName = child.key as String
print(userName)
}
})
를, 난 당신이 내 질문을 이해 생각하지만, 나는 좀 더 명확하게하기 위해 예를했다. – Acoop
lovelace와 eclarke 사용자 간의 상관 관계는 무엇입니까? 즉,이 두 사용자 노드가 중요한 이유는 무엇입니까? 노드를 로딩하는 것은 간단하지만 Firebase가 어떻게 구성되어 있는지 왜 중요하게 생각하는지 알기 쉽습니다. – Jay
예를 들어 채팅 방의 두 멤버입니다. 또는 현재 사용자가이를 따르고 있음을 나타냅니다. – Acoop