[英]Reduce firestore reads by saving data locally and comparing it against the data in Firestore?
[英]Firestore reduce reads
我想減少從 FireStore 的讀取。 如果在添加新數據時,它應該只獲取該數據。 我不希望它再次讀取整個數據庫。 我認為這是不必要的,而且代價高昂。 我嘗試了下面的代碼,但它不起作用,它沒有提取任何數據
query.get(CACHE).addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
boolean isEmpty = task.getResult().isEmpty();
if (isEmpty) {
query.get(SERVER).addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
for (QueryDocumentSnapshot documentSnapshot : task.getResult()) {
Item item= documentSnapshot.toObject(Item.class);
items.add(item);
adapter.notifyDataSetChanged();
}
}
});
}
}
}
});
當我嘗試其他方法時,離線時讀取 memory 中的數據,但在線時重新加載所有數據庫。 預先感謝您提出任何建議。
query.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
for (QueryDocumentSnapshot documentSnapshot : task.getResult()) {
Item blogPost = doc.getDocument().toObject(Item.class);
items.add(blogPost);
mAdapter.notifyDataSetChanged();
}
}
});
當您使用 get() 調用時,您總是從 Firebase 服務器獲取文檔的在線版本。 如果你只想獲得新的東西,你應該考慮跟蹤快照之間的變化。 這樣就可以只獲取特定操作對應的數據。
但請記住,您無法跳過初始數據。 我也回答過關於這個話題的問題:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.