オブジェクトの複数のノードに参加します'グループ'Firebaseは、私はこのユースケースを満たすためには、それを取得し、その後Firebaseに私のデータを構造化しようとしているだけでなく、との問題を抱えている
{
Users:
LpWgezRkC6EWS0sjXEWxhFl2: {
userName: 'John Doe'
etc...
}
},
Groups:
12345: {
PropertiesID: 78765,
GroupName: 'MyPool',
GroupOwner: 'LpWgezRkC6EWS0sjXEWxhFl2'
GroupPassword: 'jkhdfjkhfdkjhdfkjhfsae4euhh4FDDC'
etc...
}
}
任意のユーザーが参加できます。
"UserInGroups"ノードにグループのユーザーのこのペアリング(関係)を格納します。
{
UsersInGroups: {
DUmwewIfzAbfWZN4NjS8mhX82: { <- UserId
12345: true <- GroupId
},
LpWgezRkC6EWS0sjXEWxhFl2: {
12345: true
}
}
}
最後に、各グループには、グループの詳細/動作を制御する「プロパティ」ノードがあります。すべての言ったことで
{
Properties:
78765: {
PropertyName: 'Custom',
dateCreated: '20170601',
etc...
},
76421: {
PropertyName: 'Admin',
dateCreated: '20170602',
etc...
}
}
は、私のアプリは、それがUICollectionView内のすべてのグループ/プロパティ情報を表示するダッシュボードビューを持っています。 'グループ' ノード
PropertiesName
プロパティのCreationDate
にPropertiesIDに基づいて- GroupNameの
- GroupOwner
を:それは、次のような情報が表示されます
プロパティ情報とともにグループ情報を取得できるように、「ノードに参加する」とはどうすればいいですか。
アプリにログインしているユーザーがグループに属しているため(これはUsersInGroupsノードにエントリがあります)
UPDATE
フォローアップのデータ構造に関してで質問を...
は、3を行うには、それが許容される(3)私は表示するために探していたすべての情報を取得するために参加しますUIColloectionビューでこのような
何か:あなたは「グループ」ノードをダウンロードし、すべての場所で
let ref = firebase.database().ref("UsersInGroups")
ref.child((Auth.auth().currentUser?.uid)!).queryEqual(toValue: true).observe(.value, with: { snapshot in
let groupsRef = firebase.database().ref("Groups")
groupsRef.child(snapshot.key).observe(.value, with: { snap in
let propertiesRef = firebase.database().ref("Properties")
ref.child(snap.key).queryEqual(toValue: true).observe(.value, with: { gamesnapshot in
//Get all the info from firebase
})
})
})
私は情報を複製することができると思っていましたが、3つの結合が実際に受け入れられるかどうかを確認しようとしていますが、これはデータの同期について心配することなく柔軟性を提供します。 – Learn2Code
これは受け入れる方法ですこれはあなたが現在持っているデータ構造がフラット化されているからです。ただし、これには別の通話料金がかかりますが、データは効率的にダウンロードされます。 –