Обновление счетчика Firebase асинхронно в Javascript - PullRequest
0 голосов
/ 29 октября 2018

У меня есть массив, состоящий из данных JSON, теперь мне нужно отправить эти данные в коллекцию firebase (firestore) с документом счетчика, имеющим количество отправленных данных JSON.

        for (let i=0;i<jsonData.length;i++) {
            saveData(jsonData[i]);
        }

Теперь функция saveData состоит из кода firebase, который сначала обновляет счетчик на 1, а затем отправляет данные в firebase. Так что сначала для обновления счетчика:

     const docRef = this.db.collection(collection).doc('counter');
     let doc = await this.db.runTransaction(t => t.get(docRef));
     if(!doc.exists){
     const counterRef = this.db.collection(collection).doc('counter');
     return await counterRef.set({ currentCounter : 1);
                    } else {
                        return  await doc.ref.update({ currentCounter : Number(doc.data().currentCounter) + 1});
                    }

А потом я просто назначу данные для базы данных Firebase в той же коллекции, где счетчик таков, что наша база данных выглядит следующим образом:

(collection)
randomCollection -----
                     |
                  (document)
                   counter   ----------   0
                   jsonData1 ---------- {...}
                   jsonData2 ---------- {...}

Но проблема в том, что при запуске цикла for все параллельно получают данные счетчика, которые равны 0, а затем обновляются до 1, короче всего получается более 20 данных, но счетчик увеличивается только в 3-4 раза только так, что я делаю не так? Как я могу обновить счетчик параллельно с выполнением

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