Firestore多次批量写入失败,超过了截止日期

时间:2018-08-09 18:27:55

标签: javascript node.js google-cloud-firestore google-cloud-functions

我正在尝试通过任何分析和解析从文件中写入多个批处理。问题是我要执行500多次写操作,因此我尝试分批执行。我认为我执行提交的结构不正确,因为我无法使它正常工作。

如果我只执行提交(没有将它作为return语句的一部分),则什么也没有发生,并且出现以下错误

Error: 4 DEADLINE_EXCEEDED: Deadline Exceeded

,如果我返回了提交(如承诺,不确定语法是否正确),则第一个返回的提交将执行,但不允许连续执行。

一旦解决了较大的问题,用objectValue.length加上“ -1”和“ -2”的原因与我计划清理的文件和空白行有关。

我认为我的失败在于正确构造代码以重复执行。

 var j = 0;
 var batchCounter = [];
 var commitCounter = 0;
 batchCounter[commitCounter] = docRef2.batch();
 console.log("BACH");

 for (var i = 0; i < objectValue.length-1; i++) {

 const barcode = objectValue[i].Barcode;
 const description = objectValue[i].Description;
 const price = objectValue[i].Price;
 const taxable = objectValue[i].Taxable;
 const ref =docRef2.doc(`/sunshine_market/items/item/${String(barcode)}`);

 batchCounter[commitCounter].set(ref, {"barcode" : barcode, "description" : description, "price" : price, "taxable" : taxable, "number" : i});

 j += 1;
 if (j === 500 || i == (objectValue.length-2)) {
   console.log("BACH2", j);
   console.log("BACH5", commitCounter);
   console.log("BACH4", batchCounter[commitCounter]);

 //When I have the return only one commit executes but without none do                              
 return batchCounter[commitCounter].commit().then(function () {
                                    console.log("YEEZY");
                                })
       commitCounter += 1;
       batchCounter[commitCounter] = docRef2.batch();
       j = 0;
       }
}

编辑:

这个问题绝不是重复的。这些链接已有将近一年的历史,对于已经通过Beta测试的产品,它们已经过时了。最重要的是,提供给的链接实际上尚未接受解决方案。他们讨论了这个问题,但没有解决。

0 个答案:

没有答案