Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Firebase查询筛选数据或手动移动数据?_Firebase - Fatal编程技术网

使用Firebase查询筛选数据或手动移动数据?

使用Firebase查询筛选数据或手动移动数据?,firebase,Firebase,要使用Firebase在我的应用程序中管理邀请,我想保存邀请对象,但我应该如何组织它们以获得最佳性能 选项1:将所有邀请保存在同一个ref中,并使用查询和.indexOn规则 invitesRef.orderByChild('status').equalTo('pending') 所以它看起来是这样的: -invites -userid -invite objects 选项2:根据邀请状态保存在不同的参考中 -invites -userid -pending

要使用Firebase在我的应用程序中管理邀请,我想保存邀请对象,但我应该如何组织它们以获得最佳性能

选项1:将所有邀请保存在同一个ref中,并使用查询和.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似乎是最好的选项,但它将如何处理大量对象?

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

是否按状态存储邀请,取决于您期望的邀请数量和显示方式

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

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

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

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

您已经为性能做出了最重要的选择:存储每个用户的邀请。干得好

是否按状态存储邀请,取决于您期望的邀请数量和显示方式

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

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

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

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