【问题标题】:Retrieve objects by key按键检索对象
【发布时间】:2018-06-10 13:30:24
【问题描述】:

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

我目前的结构:

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

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

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

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

提前致谢

【问题讨论】:

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


    【解决方案1】:

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

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

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

    关于该主题的进一步阅读:

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-09-27
        • 1970-01-01
        • 1970-01-01
        • 2019-08-12
        • 2013-04-02
        • 2013-11-15
        • 2014-01-26
        • 2015-02-09
        相关资源
        最近更新 更多