У меня есть массив, состоящий из данных 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 раза только так, что я делаю не так? Как я могу обновить счетчик параллельно с выполнением