![](/img/trans.png)
[英]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.