子键的Firebase查询

时间:2017-12-20 07:53:33

标签: javascript angular firebase firebase-realtime-database

我的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))

请帮帮我。

1 个答案:

答案 0 :(得分:1)

您当前的数据结构可让您轻松找到特定活动的成员。如果允许您轻松确定特定用户的事件。为此,您应该添加反向数据结构。

还建议嵌套不同的实体类型,而是将它们存储在顶级节点中。

对于您的数据,这会导致四个可能的顶级节点:

users: {
  $uid: { ... }
},
events: }
  $eventid: { ... }
},
event_users: {
  $event_id: {
    $uid: true
  }
},
user_events: {
  $uid: {
    $event_id: true
  }
}

现在,您可以轻松阅读(不查询)会员的活动,用户的活动。

我还建议您查看: