2016-10-28 7 views
0

これは私の初めてのリモートデータベースの作業です。Firebaseはデータをローカルストレージにキャッシュするか、クエリ結果だけをキャッシュしますか?また、オンラインの場合、ローカルDBにヒットしますか?

私は、同じ構文を使用しているクエリがキャッシュを利用することをドキュメントから知っています。つまり、次のコードでは、リモート接続中に最初のクエリがヒットし、2番目のクエリが実行される前に接続が切断されると、2番目のクエリは引き続きキャッシュを介して動作します。

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番目をフェッチしようとする3番目のオフラインクエリがあった場合、キャッシュを介して動作しますか?

  2. リモート接続が機能している場合、FirDataEventTypeクエリはリモートに直接送られますか、リモートが実行される前にローカルクエリが実行されますか?

ありがとうございました!

答えて

0

現在のコードでは、子が既に取得されているため、2番目のクエリで追加のデータを取得する必要はありません。

しかし、ここには多くの微妙な要素があります。 Firebaseは、変更されたときにデータを同期させるため、さらに多くのシナリオが可能です。

起こっている可能性があるすべてのことを想像するのではなく、あなたがenable debug loggingの場合はおそらくもっと教育的です。これにより、クエリごとにクライアントによって取得されている実際のデータが表示されます。

関連する問題