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等于当前用户的特定子节点?
我希望后者成为结果,因为客户不需要任何属于当前用户的记录。
答案 0 :(得分:1)
在某个位置调用keepSynced(true)
与在该位置保留一个空回调的侦听器基本相同。
因此,这两个命令将确保特定用户的orders和orderItem位于缓存中。
但是,如果这是您想要的行为类型,您可能需要考虑将数据保持在更简单的结构中:/orders/firebaseUid/order1
,/orders/firebaseUid/order2
等。使用此结构,您将不需要查询以获取用户的订单,并且只需阅读(并致电keepSynced()
)/orders/firebaseUid
。