Firebase Offline Store – 查询不会返回在线商店中的更改
我正在使用将脱机function设置为true的Firebase
。
let ref = FIRDatabase.database().referenceWithPath(“my data”).child(“my users id”) scoresRef.keepSynced(true)
此path也将Synced设置为true,因为在数据库中发生的更改不会立即在应用程序中看到,因为它使用本地caching。
我的应用程序中有另一个顶级节点/path,我想要search – 包含其他用户。
我想使用一个单一的事件查询,并find一个电子邮件地址,我通过这样做
studios.queryOrderedByChild("email").queryEqualToValue(email).observeSingleEventOfType(.Value, withBlock: { snapshot in // etc
我能够find该节点,但是我一直获取本地caching版本,而不是最近的一个在firebase在线商店。
如果我在线上对节点进行了一些更改,我不会在取回中取回这些节点。
如果我改变我的提取到一个监视器types即
studios.queryOrderedByChild("email").queryEqualToValue(email).observeEventType(.Value, withBlock: { snapshot in // etc
我先获取本地caching节点,然后获取在线更新版本。
我宁愿使用SingleEvent提取,但我不想用keepSynced监视用户的整个节点,因为它是一个高层次的节点,我不想保留所有的数据本地,因为它不直接关系到用户。
我发现一个修复是在单个查询之前添加.keepSynced(true)并在完成块中添加.keepSynced(false)。 我不确定有多less节点是下载的,不妨使用监视器抓取而不是singleEvent。
我应该只使用monitorEvent还是有更好的方法来使用SingleEventFetch去到在线商店,而不是只是返回我的本地节点。
PS我在线,这是通过确认
var connectedRef = FIRDatabase.database().referenceWithPath(".info/connected") connectedRef.observeEventType(.Value, withBlock: { snapshot in let connected = snapshot.value as? Bool if connected != nil && connected! { println("Connected") } else { println("Not connected") } })
谢谢