簡體   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