你能帮我吗?
我需要创建大量文档(和子集合)。
执行此过程的最佳方法是什么?
我试图将操作分成批处理(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:已超过截止日期