按键检索对象

时间:2018-06-10 13:30:25

标签: firebase firebase-realtime-database database-design

我想构建一个参与者列表,其中包含其他对象的键。

我目前的结构:

- events
-- 12345678910 // eventKey
--- name
--- participants // contains userIds
---- A123456789: true
---- B123456789: true

- users
-- A123456789 // userId
--- Username: 'NameA'
-- B123456789 // userId
--- Username: 'NameB'

我只是将用户ID保存在参与者列表中,以避免冗余数据并便于维护。

我的问题:检索所有引用的用户密钥的用户数据的最佳方法是什么?我是否必须为每个用户ID创建一个查询?! 或者有更好的方法来保存firebase中的引用吗?

提前致谢

2 个答案:

答案 0 :(得分:3)

要读取特定事件中所有参与者的用户数据,您确实必须为每个参与者附加一个侦听器。这并不像许多开发人员最初想的那么慢,因为Firebase pipelines the requests over its existing connection

但是,在每个事件下复制每个参与者的一些数据也很常见,这样您就可以显示有关参与者的基本信息,而无需阅读每个单独的用户节点。

E.g。如果显示事件的参与者名称,则可以存储用户名而不是true并保存查找。但当然,这需要以重复数据为代价,并且必须弄清楚是否/如何使其保持最新状态。要了解有关基本策略的更多信息,请参阅

关于这个主题的进一步阅读:

答案 1 :(得分:2)

使用您当前的结构,您必须执行多个查询。

在NoSQL数据库中复制数据是非常常见的,以避免必须执行这样的多个查询。