Firebase Cloud FireStore:插入大数组

Firebase Cloud FireStore: Insert Large Array

免责声明:我已经编程大约 4 个月了,所以我对编程还是很陌生。

我将 Firebase Cloud Firestore 用于数据库并插入包含大量数据的 CSV 文件。每个文件的长度约为 100k 条记录。我正在从事的项目要求用户从网页上传这些 CSV。

我创建了一个文件上传器,我正在使用 PapaParse JS 工具来解析 csv,它做得非常好,它立即 returns 一个数组,即使它很长。我尝试使用我能找到的最大文件,然后将其记录到控制台,速度非常快。

问题是当我获取它给我的数组并循环遍历它并将其插入 Cloud Firestore 时。它有效,数据完全按照我想要的方式插入。但它很慢。如果我关闭浏览器 window,它就会停止插入。仅插入 50 条记录大约需要 10-15 秒。所以对于 100k 记录的文件,这是行不通的。

我正在考虑使用 Cloud Functions,但在我现在尝试了解它是如何工作之前,也许我只是没有以有效的方式这样做?所以我想在这里问一下。

这是 JS

// Get the file uploader in the dom
var uploader = document.getElementById('vc-file-upload');

// Listen for when file is uploaded 
uploader.addEventListener('change',function(e){
  
  // Get the file 
  var file = e.target.files[0];

  // Parse the CSV File and insert into Firestore
  const csv = Papa.parse(file, {
   header: true,
   complete: function(results) {
    console.log(results);
    
    sim = results.data;
    var simLength = sim.length;
    for (var i = 0; i < simLength;i++) {
     var indSim = sim[i]
     iccid = indSim.iccid;
     const docRef = firestore.collection('vc_uploads').doc(iccid);
     docRef.set({indSim}).then(function() {
     console.log('Insert Complete.')
     }).catch(function (err) {
     console.log('Got an error: '+ err)
      })
    };

   }
  });
});

如果您只上传文件(可能是云存储)并在云函数或其他后端执行数据库操作,总体上肯定会更快,即使用户离开应用程序,它也会完成。