Firestore reduce reads



我想减少从FireStore读取。如果,当添加新数据时,它应该只获取该数据。我不想让它再次读取整个数据库。我认为这将是不必要的和昂贵的。我试着下面的代码,但它不工作,它不会把任何数据

https://medium.com/firebase -建议- tricks/how - -大大减少- - - - - - - - -读- -没有文档时的改变——在firestore - 8760 e2f25e9e

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();
}
}
});
}
}
}
});

当我尝试其他方法时,离线时读取内存中的数据,但在线时重新加载所有数据库。谢谢你的建议。

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服务器获取文档的在线版本。如果您只想获取新的内容,则应该考虑跟踪快照之间的更改。通过这种方式,您只能获得与特定操作相对应的数据。

但是请记住,您无法跳过初始数据。我也回答了一个关于这个话题的问题:

  • 如何跳过初始数据并仅触发firestorefirebase中的新更新?

最新更新