javascript - 子键的 Firebase 查询

标签 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,
               ...
           }
       },
       ...
    }
}

我有一个节点事件,每个 child 都是一个事件,每个事件都有一个成员列表。问题是,如何查询某个成员的所有事件?例如,具有成员 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
  }
}

现在您可以轻松读取(无需查询)事件的成员,用户的事件。

我还建议您查看:

关于javascript - 子键的 Firebase 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47901191/

相关文章:

javascript - DataTable 在小型设备上无法正确呈现

javascript - FabricJS 层

javascript - 计划的云功能内的 HTTP POST 请求不起作用

javascript - 测试 api 响应给我错误,因为用 Protractor 替换字符 �

javascript - 通过 URL 中的 URI 代码在推文中使用省略号?

angular - 如何在 Angular HTTPClient 中处理流

python - Django REST API 返回 Angular 4 中不存在 'Access-Control-Allow-Origin' header

html - 在选择选项中添加图标 - Angular 2

Java Firebase 数据库设置

javascript - Firebase - ref 和 child 有什么区别?