首页 > 解决方案 > 将文档批量提交到 Google Firestore 数据库、node.js 和 promise 问题

问题描述

我正在尝试遍历一组事务,然后将每个事务添加到批处理中以提交到我的 firestore 数据库。

但是,我的功能在完成批处理请求并将事务写入我的数据库之前完成。

我相信我需要使用承诺来等待提交我的批处理请求,但我是 node.js 和承诺的新手。

想知道是否有人能够帮助并指出在我的代码中在何处以及如何使用承诺来确保批处理请求得到满足。

function saveTransactions(transactions)
{
  var batch = db.batch();
  var i;
  for (i = 0; i < transactions.length - 1; i++)
  {
    var transaction = transactions[i]
    var data = {
        description: transaction.description,
        amount: transaction.amount
    };
    var docRef = db.collection('user_transactions').doc();
    batch.set(docRef, data);
  }
  return batch.commit().then(function () {
    return true
  });
}

这是 Firebase 的 firestore 和批处理请求文档的链接,以提供一些上下文 - https://firebase.google.com/docs/firestore/manage-data/transactions

标签: javascriptnode.jspromisegoogle-cloud-firestorebatch-processing

解决方案


你的for循环看起来不对。它不是在数组上循环:

for (i = 0; i < 1; i++)

那只会执行一次这个循环的主体。如果您尝试遍历事务的所有内容,则可能需要这样:

for (i = 0; i < transactions.length; i++)

推荐阅读