2017-06-13 9 views
2

オブジェクトの複数のノードに参加します'グループ'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 

     }) 
    }) 
}) 

答えて

0

は、あなたがその特定のグループのプロパティが必要なのでしょうか?そうした場合、新しいノードを「Groups」内に作成してプロパティを呼び出すことができ、そこにすべてのプロパティをリストすることができます。

+0

私は情報を複製することができると思っていましたが、3つの結合が実際に受け入れられるかどうかを確認しようとしていますが、これはデータの同期について心配することなく柔軟性を提供します。 – Learn2Code

+0

これは受け入れる方法ですこれはあなたが現在持っているデータ構造がフラット化されているからです。ただし、これには別の通話料金がかかりますが、データは効率的にダウンロードされます。 –

関連する問題