我的firebase数据库中有下一个结构:
{
events: {
event_1:{
startdate: 120934210,
enddate: 120934211,
members: {
uid_1: true,
uid_2: true,
...
}
},
event_2:{
startdate: 120934210,
enddate: 120934211,
members: {
uid_2: true,
uid_3: true,
...
}
},
...
}
}
我有一个节点事件,每个子节点都是一个事件,每个事件都有一个成员列表。问题是,如何查询某个成员的所有事件?例如,具有成员uid_2的所有事件。我正在使用angularfire2和angular 4.我正在尝试做类似的事情:
db.list('events/',ref => ref.orderByChild('members').equalTo(uid))
请帮我。
您当前的数据结构允许您轻松找到特定事件的成员。如果不允许您轻松确定特定用户的事件。为此,您应该添加反向数据结构。
还建议不要嵌套不同的实体类型,而是将它们存储在顶级节点中。
对于您的数据,这会导致四个可能的顶级节点:
users: {
$uid: { ... }
},
events: }
$eventid: { ... }
},
event_users: {
$event_id: {
$uid: true
}
},
user_events: {
$uid: {
$event_id: true
}
}
现在,您可以轻松读取(不查询)事件的成员以及用户的事件。
我还建议你看看: