使用for循环将文档添加到Firestore

时间:2019-08-14 05:26:17

标签: javascript for-loop google-cloud-firestore

我正在构建一个记录财务交易的应用程序。我想通过一个操作添加类似的事务,因此,我使用一个for循环将事务添加到Cloud Firestore数据库中。唯一更改的参数是交易日期。

我的代码在for循环中循环,但是在日期更改之前,所有实例都添加到Firestore中,然后在for循环中添加。

我了解这是由于Cloud Firestore的异步方面造成的,但是我不知道如何使它工作。

我将用于更改日期的代码放在for循环的不同位置,但是结果保持不变。

let date = transaction.date;

let freqNmbr = document.getElementById('newTransactionFreqNmbr').value;

for (i = 0; i < freqNmbr; i++) {


db.collection(auth.currentUser.uid).doc("db").collection("transactions").add({
                    amount: transaction.amount,
                    date: date,
                    status: transaction.status,
                    account: transaction.account,
                    description: transaction.description,
                    freqNmbr: transaction.freqNmbr,
                    freqType: transaction.freqType
                })
                    .then(function (docRef) {
                        console.log("Document written with ID: ", docRef.id);

                        date = new Date(date);

                        if (transaction.freqType == "dag") {
                            date.setDate(date.getDate() + 1);
                        } else if (transaction.freqType == "week") {
                            date.setDate(date.getDate() + 7);
                        } else if (transaction.freqType == "maand") {
                            date.setMonth(date.getMonth() + 1);
                        } else {
                            date.setFullYear(date.getFullYear() + 1);
                        }

                        let yy = date.getFullYear();
                        let mm = '' + (date.getMonth() + 1);
                        let dd = '' + date.getDate();

                        if (mm.length < 2) mm = '0' + mm;
                        if (dd.length < 2) dd = '0' + dd;

                        date = yy + '-' + mm + '-' + dd;
                    })
                    .catch(function (error) {
                        console.error("Error adding document: ", error);
                    });

            }

1 个答案:

答案 0 :(得分:0)

我使用批量写入来解决此问题。

https://firebase.google.com/docs/firestore/manage-data/transactions