我正在使用Firebase
并将离线功能设置为true。
let ref = FIRDatabase.database().referenceWithPath(“my data”).child(“my users id”)
scoresRef.keepSynced(true)
此路径也将Synced设置为true,因为在使用本地缓存时,应用程序中不会立即看到数据库中的更改。
我的应用中有另一个我要搜索的顶级节点/路径 - 包含其他用户。
我想使用singleEvent查询并查找电子邮件地址,我正在通过
执行此操作studios.queryOrderedByChild("email").queryEqualToValue(email).observeSingleEventOfType(.Value, withBlock: { snapshot in // etc
我能够找到该节点,但是我一直在获取本地缓存版本,而不是firebase在线商店中的最新版本。
如果我在网上对节点进行了一些更改,我不会在获取中取回这些内容。
如果我将我的提取更改为监视器类型,即
studios.queryOrderedByChild("email").queryEqualToValue(email).observeEventType(.Value, withBlock: { snapshot in // etc
我首先获得本地缓存节点,然后获取在线更新版本。
我宁愿使用SingleEvent fetch,但我不想用keepSynced监视用户的整个节点,因为它是一个高级节点,我不想在本地保留所有这些数据,因为它没有直接相关给用户。
我发现的一个修复是在单个查询之前添加.keepSynced(true),在完成块中添加.keepSynced(false)。我不确定这个节点的下载量是多少,也可以使用monitor fetch而不是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")
}
})
由于