5

オンラインコンテンツの更新まで、キャッシュを使用します。私はオフラインのデータ永続性についてのドキュメントやチュートリアルを読んだことがありますが、内容が変更されていなくてもFirestoreが再びデータをダウンロードするかどうかはわかりません。私は結果は週に一度更新されますと、私は変更が行われたまで、アプリは再びコンテンツをダウンロードすることを必要としないクエリがある場合たとえば、どのようなコードを書くための効率の点で最良の方法 です? ありがとう!Firestore - 私はFirestoreを始めています

答えて

0

あなたはあなたのクエリに耳を傾け、「スナップショットリスナー」APIを使用したい: https://firebase.google.com/docs/firestore/query-data/listen#listen_to_multiple_documents_in_a_collection

ここでは一例として、いくつかのJavaScriptのだ:

db.collection("cities").where("state", "==", "CA") 
    .onSnapshot(function(querySnapshot) { 
     var cities = []; 
     querySnapshot.forEach(function(doc) { 
      cities.push(doc.data().name); 
     }); 
     console.log("Current cities in CA: ", cities.join(", ")); 
    }); 

あなたはFirestoreがアクセスするこのリスナーを添付して初めてネットワークを使用してすべての結果をクエリにダウンロードし、期待どおりのクエリスナップショットを提供します。

あなたが同じリスナーをもう一度接続し、オフライン永続性を使用している場合、リスナーは、キャッシュからの結果ですぐに起動されます。ここでは、あなたの結果がキャッシュまたはローカルからであるかどうかを検出することができます方法は次のとおりです。あなたがキャッシュされた結果を取得した後、Firestoreは、クエリの結果に変更があるかどうかを確認するためにサーバーに確認します

db.collection("cities").where("state", "==", "CA") 
    .onSnapshot({ includeQueryMetadataChanges: true }, function(snapshot) { 
     snapshot.docChanges.forEach(function(change) { 
      if (change.type === "added") { 
       console.log("New city: ", change.doc.data()); 
      } 

      var source = snapshot.metadata.fromCache ? "local cache" : "server"; 
      console.log("Data came from " + source); 
     }); 
    }); 

。はいの場合は、変更が加えられた別のスナップショットが表示されます。 https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/QueryListenOptions

あなたのクエリを発行するときにQueryListenOptionsを使用することができます(ない文書がsnapshot.metadata.fromCache変更を変更しないものの場合など)メタデータのみを伴う変更が通知されるようにしたい場合は

関連する問題