Не удалось прочитать большие данные, используя снимок в облачном хранилище - PullRequest
0 голосов
/ 12 февраля 2020

В базе данных Cloud Firestore из-за избытка документов в одной коллекции код снимка, который я обычно использую для чтения документов, не работает. Пожалуйста, посмотрите код ниже, это то, как мы пытаемся прочитать данные. Во время использования приложение зависает, что приводит к зависанию устройства.

  1. Мы уже инициализировали приложение и создали соединение firestoredb при загрузке нашего приложения, используя приведенный ниже код.
    //firebase is a global namespace from which all Firebase services are accessed.
    firebase.initializeApp(firebaseConfig);

       //Initialize firebase database     
        firestoredb = firebase.firestore();

    // caches a copy of the Cloud Firestore data that your app is actively using, so your app can access the data when the device is offline
    //[START initialize_persistence]
    firebase.firestore().enablePersistence();

2.After this we are trying to read the data using the below code.      
```
 syncTagFromFirebase:function() {
      //Read Data From Cloud Firestore
      //Read data with onSnapshot  and docChanges and save the data in mySQL database
          firestoredb.collection('T5010_TAG').onSnapshot({
                        //Indicates whether metadata-only changes should trigger snapshot events.
                     includeMetadataChanges: true 
                    }, function (querySnapshot) {
                        querySnapshot.docChanges().forEach(function (document) {
                            var source = querySnapshot.metadata.fromCache ? "Local Cache" : "FireBase Server";
                               if (source != "Local Cache") {  
                                if (document.type === "added") {
                                    db.transaction(function (tx, rs) {
                                        tx.executeSql("INSERT OR REPLACE INTO T5010_TAG(C5010_TAG_ID, C207_Set_Id, C901_Status,C5010_Void_Fl) VALUES (?,?,?,?) ", [document.doc.id,syncData.sid,syncData.sts,syncData.vfl]

                                         );
                                    });
                                }

                                if (document.type === "modified") {
                                    db.transaction(function (tx, rs) {
                                        tx.executeSql("UPDATE T5010_TAG SET C5010_TAG_ID=? ,C207_Set_Id=?,C901_Status=?,C5010_Void_Fl=? WHERE C5010_TAG_ID =?", [document.doc.id,syncData.sid,syncData.sts,syncData.vfl,document.doc.id]

                                    );
                                    });
                                }
                }

                        });
                    });

            },

1 Ответ

0 голосов
/ 12 февраля 2020

Загрузка всех документов делает приложение дрянным, так как получение всех документов приводит к его загрузке в ОЗУ, вместо загрузки всех документов в определенной коллекции, вы можете использовать paging , загружая документы только при необходимости
Похоже, что вы храните данные документов локально в sqlite, вы загружаете документы в пакетном режиме с использованием подкачки страниц, а после сохранения в sqlite вы можете получить следующий набор документов.
Firestore также поддерживает автономный режим , поэтому нет необходимо сохранить данные в sqlite, проверьте, подходит ли автономное использование данных для вашего приложения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...