错误:4个DEADLINE_EXCEEDED:已超过截止日期-FB

时间:2019-07-25 12:51:23

标签: firebase google-cloud-firestore

你能帮我吗?

我需要创建大量文档(和子集合)。

执行此过程的最佳方法是什么?

我试图将操作分成批处理(500个操作),并通过promises执行批处理。

但是,我收到错误消息:   -TRANSACTION_TOO_BIG   -DEADLINE_EXCEEDED

我创建了代码来测试和例示场景。

https://github.com/fabiogmartins/test_firebase/blob/master/src/index.ts

let promisses = [];

for (var i = 0; i < batches.length; i++) {
    if (batches[i]._writes.length > 0) {
        if (promisses.length < 15) {
            console.log('Push Batch ' + i + ' --- time: ' + new Date().getHours() + ':' + new Date().getMinutes() + ':' + new Date().getSeconds());
            promisses.push(batches[i].commit());
        } else {
            console.log('Processing promises with ' + promisses.length + ' batchs ' + ' --- time: ' + new Date().getHours() + ':' + new Date().getMinutes() + ':' + new Date().getSeconds());
            await Promise.all(promisses).catch((err) => { console.log(`batchCommit error: ${err}` + ' --- time: ' + new Date().getHours() + ':' + new Date().getMinutes() + ':' + new Date().getSeconds()) });
            promisses = [];
            promisses.push(batches[i].commit());
        }
    }
}

if (promisses.length > 0) {
    console.log('Processing promises with ' + promisses.length + ' batchs ' + ' --- time: ' + new Date().getHours() + ':' + new Date().getMinutes() + ':' + new Date().getSeconds());
    await Promise.all(promisses).catch((err) => { console.log(`batchCommit error: ${err}` + ' --- time: ' + new Date().getHours() + ':' + new Date().getMinutes() + ':' + new Date().getSeconds()) });
    promisses = [];
}

设置为创建10000个文档,执行该文档时将返回以下消息:错误:4 DEADLINE_EXCEEDED:已超过截止日期

0 个答案:

没有答案