orderByChild查询中已解析的节点是什么?

时间:2017-06-07 16:58:54

标签: android firebase firebase-realtime-database

structuring the database上的Firebase文档提到了以下内容:

  

...当您在数据库中的某个位置获取数据时,您还会检索其所有子节点。

我有以下基本数据结构:

<div class='container'>
  <div class='text'>
    This should be centered
  </div>
  <img src="https://placehold.it/250x250"/>
</div>

在我的Android启动代码中,我打算同步属于当前用户的订单和orderItem来处理离线场景。

databaseRoot: {
    orders: {
        order1: {
            firebaseId: firebaseUid,
            ...
        }
    }
    orderItems: {
        order1: {
            firebaseId: firebaseUid,
            ...
        }
    }
}

我的问题: 同步引用是否将数据位置分别视为整个Orders和OrderItems节点?或者它是否解析为满足firebase用户ID等于当前用户的特定子节点?

我希望后者成为结果,因为客户不需要任何属于当前用户的记录。

1 个答案:

答案 0 :(得分:1)

在某个位置调用keepSynced(true)与在该位置保留一个空回调的侦听器基本相同。

因此,这两个命令将确保特定用户的orders和orderItem位于缓存中。

但是,如果这是您想要的行为类型,您可能需要考虑将数据保持在更简单的结构中:/orders/firebaseUid/order1/orders/firebaseUid/order2等。使用此结构,您将不需要查询以获取用户的订单,并且只需阅读(并致电keepSynced()/orders/firebaseUid