Dog*_*fee 6 ios firebase firebase-realtime-database
我正在使用Firebase离线功能设置为true.
let ref = FIRDatabase.database().referenceWithPath(“my data”).child(“my users id”)
scoresRef.keepSynced(true)
Run Code Online (Sandbox Code Playgroud)
此路径还将Synced设置为true,因为在使用本地缓存时,应用程序中不会立即看到数据库中的更改.
我在我的应用程序中有另一个我要搜索的顶级节点/路径 - 包含其他用户.
我想使用singleEvent查询并找到一个电子邮件地址,我这样做是通过
studios.queryOrderedByChild("email").queryEqualToValue(email).observeSingleEventOfType(.Value, withBlock: { snapshot in // etc
Run Code Online (Sandbox Code Playgroud)
我能够找到该节点,但是我一直在获取本地缓存版本,而不是firebase在线商店中的最新版本.
如果我在线对节点进行了一些更改,我不会在获取中获取这些更改.
如果我将我的提取更改为监视器类型即
studios.queryOrderedByChild("email").queryEqualToValue(email).observeEventType(.Value, withBlock: { snapshot in // etc
Run Code Online (Sandbox Code Playgroud)
我先获取本地缓存节点,然后获取在线更新版本.
我宁愿使用SingleEvent提取,但我不想用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")
}
})
Run Code Online (Sandbox Code Playgroud)
谢谢
| 归档时间: |
|
| 查看次数: |
510 次 |
| 最近记录: |