火力地堡有多个节点的加入对象

问题描述:

我在与努力造我在火力地堡数据,以及随后检索,为了满足这种使用情况的问题:火力地堡有多个节点的加入对象

我有“用户”,我有'Groups'

{ 
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

    • 的组名
    • 的GroupOwner
    • :应该显示的信息,如

我该如何去“加入节点”,以便能够检索组信息以及属性信息;

根据登录到应用程序的用户是否为组的一部分(因此在UsersInGroups节点中有条目)?

UPDATE

后续的关于数据结构的问题...

是否可以接受做三(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

我在想我可以复制信息,但我试图看看在实践中是否可以接受三个连接,因为这确实提供了更大的灵活性,同时又不用担心数据失去同步 – Learn2Code

+0

我认为这是一种可接受的方式这是因为你现在的数据结构已经变平了。但是,这需要单独的通话费用,但您的数据将被有效下载。 –