Firebase离线商店 - 查询不返回在线商店中的更改

时间:2016-06-15 23:05:43

标签: ios firebase firebase-realtime-database

我正在使用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")
    }
})

由于

0 个答案:

没有答案