使用Firebase查询过滤数据还是手动移动数据?

时间:2015-12-11 15:05:09

标签: firebase

要使用Firebase在我的应用中管理邀请,我想保存邀请对象,但我应该如何构建它们以获得最佳效果?

选项1:将所有邀请保存在同一个参考中并使用查询和.indexOn规则

invitesRef.orderByChild('status').equalTo('pending')

所以它看起来像这样:

-invites
  -userid
     -invite objects

选项2:根据邀请状态保存在不同的参考中

-invites
  -userid
    -pending
      -invite objects
    -accepted
      -invite objects
    -declined
      -invite objects
    -expired
      -invite objects

这样我每次邀请更改状态时都必须删除并创建。

我正在使用AngularFire和$ firebaseArray来处理所有待处理的邀请。

选项1似乎是最佳选择,但它如何使用大量对象执行?

1 个答案:

答案 0 :(得分:0)

您已经做出了最重要的性能选择:您可以按用户存储邀请。干得好!

是否按状态存储邀请,取决于您期望的邀请数量以及您希望如何显示这些邀请。

如果您的应用程序将显示(例如)每个状态的选项卡,那么将每个状态的邀请存储在单独的节点中也是有意义的。在这种情况下,我不会担心移动节点的成本太高。

但是,如果您的应用在单个列表中显示所有状态的邀请,那么最好还将它们存储在数据库的一个列表中。

如果在后一种情况下你担心邀请的数量(这些必须是你正在处理的一些非常受欢迎的人),你可以考虑将它们存储在日期范围的存储桶中。

-invites
  -userid
     -201512
        -invite objects for December
     -201511
        -invite objects for November