Firebase是否仅在本地存储上缓存数据,只是查询结果?另外,如果在线,本地数据库命中了吗?

时间:2016-10-28 08:59:58

标签: swift firebase-realtime-database

这是我第一次使用远程数据库,所以请耐心等待。

我通过文档知道使用相同语法的查询将使用缓存。即:在以下代码中,如果在远程连接期间遇到第一个查询,并且在第二个查询执行之前连接断开,则第二个查询仍将通过缓存工作。

let scoresRef = FIRDatabase.database().referenceWithPath("scores")
scoresRef.queryOrderedByValue().queryLimitedToLast(4).observeEventType(.ChildAdded, withBlock: { snapshot in
    print("The \(snapshot.key) dinosaur's score is \(snapshot.value)")
})

scoresRef.queryOrderedByValue().queryLimitedToLast(2).observeEventType(.ChildAdded, withBlock: { snapshot in
    print("The \(snapshot.key) dinosaur's score is \(snapshot.value)")
})
  1. 文档中的数据是否已缓存,导致任何形式的查询,以便已经提取的数据在脱机后成功。例如,如果在这个例子中我有一个第三个离线查询试图通过其密钥获取分数的第4个到最后一个孩子,它是否可以通过缓存工作?

  2. 当远程连接正常时,FirDataEventType查询会直接转到远程,还是在远程运行之前运行本地查询?

  3. 感谢您提供任何意见!

1 个答案:

答案 0 :(得分:0)

在您当前的代码中,第二个查询不必检索其他数据,因为已经检索了子代。

但这里有许多细微之处。 Firebase会在数据发生变化时对其进行同步,从而实现更多场景。

如果你enable debug logging,它可能更有教育意义,而不是试图想象所有可能发生的事情。这将显示客户端为每个查询检索的实际数据。