我想构建一个参与者列表,其中包含其他对象的键。
我目前的结构:
- events
-- 12345678910 // eventKey
--- name
--- participants // contains userIds
---- A123456789: true
---- B123456789: true
- users
-- A123456789 // userId
--- Username: 'NameA'
-- B123456789 // userId
--- Username: 'NameB'
我只是将用户ID保存在参与者列表中,以避免冗余数据并便于维护。
我的问题:检索所有引用的用户密钥的用户数据的最佳方法是什么?我是否必须为每个用户ID创建一个查询?! 或者有更好的方法来保存firebase中的引用吗?
提前致谢
答案 0 :(得分:3)
要读取特定事件中所有参与者的用户数据,您确实必须为每个参与者附加一个侦听器。这并不像许多开发人员最初想的那么慢,因为Firebase pipelines the requests over its existing connection。
但是,在每个事件下复制每个参与者的一些数据也很常见,这样您就可以显示有关参与者的基本信息,而无需阅读每个单独的用户节点。
E.g。如果显示事件的参与者名称,则可以存储用户名而不是true
并保存查找。但当然,这需要以重复数据为代价,并且必须弄清楚是否/如何使其保持最新状态。要了解有关基本策略的更多信息,请参阅
关于这个主题的进一步阅读:
答案 1 :(得分:2)
使用您当前的结构,您必须执行多个查询。
在NoSQL数据库中复制数据是非常常见的,以避免必须执行这样的多个查询。