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