对不起,我是Firebase的新手。这是我的示例数据库。
{
groups:{
#groupid:{
members:{
#userid:
}
name:
}
}
}
我正在尝试查找用户的群组。当我使用组名搜索时,我能够获取数据:
let lRef = FIRDatabase.database().referenceWithPath("groups")
lRef.queryOrderedByChild("name").queryEqualToValue("one").observeSingleEventOfType(.Value, withBlock: { snapshot in
print("hello world \(snapshot.value)")
})
但是当我在会员中搜索用户ID时,我无法获得。有人请帮我完成这件事。
答案 0 :(得分:1)
这是嵌套数据的完美示例。
Google就此主题提供了一个很好的documentation。他们建议避免这种情况。
这是一个引用:
避免嵌套数据
由于Firebase实时数据库允许最多嵌套数据深度为32级,因此您可能会认为这应该是默认结构。但是,当您在数据库中的某个位置获取数据时,还会检索其所有子节点。此外,当您在数据库中的某个节点上授予某人读取或写入权限时,您还可以授予他们访问该节点下所有数据的权限。因此,在实践中,最好保持数据结构尽可能平坦。
您可能会在数据库中拥有另一个包含用户元数据的节点。用户节点应该有一个包含用户所在的所有组的子节点。这样您就可以轻松地查看用户所在的组。
如果我是正确的,这正是你想要实现的目标。
您的数据库应该/看起来像这样:
{
groups: {
#groupid01: {
members: {
#userid: true,
}
name: #groupname01
},
#groupid02: {
members: {
}
name: #groupname02
}
},
users: {
#userid01: {
groups: {
#groupid01: true,
#groupid02: true
}
},
#userid02: {
groups: {
}
},
...: {},
}
}
希望这有帮助!