typescript - Firestore flera tidsbestämda batch-commits hänger utan något svar
Jag har haft ett problem med Firestore batch-commits när jag försöker uppdatera en samling dokument regelbundet, eller när jag försöker skriva en stor mängd data. Firestore verkar bara frysa och skickar ingen respons. I båda fallen följs rekommendationerna för maximal batch-storlek (500) och dokumentstorlek. Genom att använda cronjobb, till exempel, körs commits framgångsrikt under en tid innan de helt slutar utan någon felspårning.
Till exempel körs koden nedan 6 gånger i rad innan den börjar bete sig fel.
public updateCoins = async () =>{
const markets = await this.getMarkets('usd')
const maxCount = Math.round(markets.length/this.FB_BATCH_SIZE) + 1
for(let i=0; i< maxCount; i++){
const marketBatch = markets.slice(i*this.FB_BATCH_SIZE, (i+1)*this.FB_BATCH_SIZE > markets.length ? markets.length : (i+1)*this.FB_BATCH_SIZE)
const batchCoins = this.fbService.db.batch()
marketBatch.map((entry)=>{
const coin = this.mapCoin(entry)
if(coin){
const coinRef = this.coinsCol.doc(coin.id);
batchCoins.set(coinRef,coin,{merge:true})
}
})
await batchCoins.commit()
.then(()=>{
console.log('Commited coins batch update')
}).catch((_e)=>{
console.log('Exception saving coins',_e)
})
}
}