繁体   English   中英

Firestore 减少读取

[英]Firestore reduce reads

我想减少从 FireStore 的读取。 如果在添加新数据时,它应该只获取该数据。 我不希望它再次读取整个数据库。 我认为这是不必要的,而且代价高昂。 我尝试了下面的代码,但它不起作用,它没有提取任何数据

https://medium.com/firebase-tips-tricks/how-to-drastically-reduce-the-number-of-reads-when-no-documents-are-changed-in-firestore-8760e2f25e9e

    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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM