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") } }) 

谢谢