オンラインコンテンツの更新まで、キャッシュを使用します。私はオフラインのデータ永続性についてのドキュメントやチュートリアルを読んだことがありますが、内容が変更されていなくてもFirestoreが再びデータをダウンロードするかどうかはわかりません。私は結果は週に一度更新されますと、私は変更が行われたまで、アプリは再びコンテンツをダウンロードすることを必要としないクエリがある場合たとえば、どのようなコードを書くための効率の点で最良の方法 です? ありがとう!Firestore - 私はFirestoreを始めています
5
A
答えて
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
変更を変更しないものの場合など)メタデータのみを伴う変更が通知されるようにしたい場合は
関連する問題
- 1. 私はちょうどPythonCardを使い始めています...
- 2. 私はtkinterを使い始めています
- 3. 私はLDAPプロトコルを勉強し始めています
- 4. ジェンキンスパイプラインは、私はこのように私のパイプラインを始めています
- 5. JavascriptのReactJsは、私がReactJsにアップし始めています
- 6. 私はrunserver djangoを開始するために直面していますか?
- 7. 私はアンドロイドで作業を始めていアンドロイド
- 8. は、私はObjective Cのを学ぶために始めている
- 9. E-ビジネスを開始、私はeビジネスを始める検討しています言語
- 10. URLSessionTaskは、私は次のコードでURLSessionTaskを始めているエラー私のExtensionDelegateで
- 11. 私が始めるためにしようとしている
- 12. 私はDapps開発に始めていますAlethZeroとMIX IDE展開Dapps
- 13. 私はただのverilogを学ぶために始めている
- 14. 私はハードウェアボードに魅了され、ハードウェアで直接コーディングしています。私は始めたいですか?
- 15. レールまだ私は私のコントローラから始めましょう
- 16. 私はPHPプログラミングを始めていますし、私はこの質問持つbgStretcher
- 17. 私はMVVMライトバージョン4を使用することを始めている
- 18. は、なぜ私は、次のコマンドを使用してJavaプロセスを始めています
- 19. は、現在、私が使用して活動を始めているの出口
- 20. OpenCVのPythonのアサーションは、私はちょうどOpenCVのを学ぶために始めていますし、ここでチュートリアルを働いています
- 21. 私は行くの学習を始めてVimの
- 22. JSF 1.2カスタムコンポーネントは:私は私の質問を始める前
- 23. Eclipseは始める前にフリーズしています
- 24. gitを使い始めようとしています
- 25. 私はDemandwareの学習を始めたい
- 26. は私がWindows上で、最近火花を使い始めスパーク
- 27. 私はRead Moreボタンをしようとしていますが、JavaScript/jqueryを使用し始めました。
- 28. NestedScrollviewはじめて始める
- 29. 私は以下のようなコードでプロセスを始めているStandardOutput
- 30. は、私はちょうどのasp.net MVCでaorund弾き始めている