单个云函数可写入的Firestore集合与文档数量是否有限制?
Cloud Firestore 写入常见限制
- 单文档最大容量为1MB,超出后无法写入,这也是你无法将完整JSON payload存入单个文档的核心原因
- 单文档的写入频率上限为每秒1次,高频写入同一文档会触发限流报错
- 单批量写入操作最多支持同时处理500条写入/更新/删除指令,批量操作为原子性,所有指令要么全部执行成功,要么全部失败
- 字段命名禁止包含
.、[]、*、~等特殊字符,字段嵌套层级最多支持100层 - 云函数运行有超时限制:HTTP触发的云函数默认超时60秒,最长可配置为60分钟;事件触发的云函数默认超时60秒,最长可配置为9分钟,只要所有写入操作能在超时前完成即可正常运行
多位置写入实现方案
完全可以在单个云函数内完成所有100条数据的写入操作,无需拆分到多个云函数,拆分云函数只会额外增加调用开销和运维复杂度。
你当前逐条await写入的写法性能较低,建议使用Firestore批量写入接口优化,示例代码如下:
const batch = admin.firestore().batch() // 写入根集合文档 const rootDocRef = admin.firestore().collection("collection1").doc(doc1) batch.set(rootDocRef, { field1: data.fieldFromJson1 }) // 写入子集合文档 const subDocRef = rootDocRef.collection("sub-collection1").doc(doc2) batch.set(subDocRef, { field2: data.fieldFromJson2 }) // 其余98条写入操作按上述逻辑循环添加到batch中即可,若总操作数超过500,可拆分多个batch并行提交 await batch.commit()
内容的提问来源于stack exchange,提问作者Stephen Stilwell
相关产品推荐
相关产品推荐

