Firebase时间点恢复(PITR)问题:部分字段(含数组)未恢复
Firestore PITR恢复字段缺失问题分析
核心结论
字段缺失和索引无关,也不存在单文档字段数量的恢复限制。Firestore时间点恢复(PITR)读取的是指定时间点的完整文档快照,不会因为字段是否被索引或字段数量多少而过滤内容。
可能的原因排查
时间戳准确性问题
确认你指定的readTimestamp(2024-06-27T16:30:00Z)是否确实是这些缺失字段已经写入Firestore的时间点。如果字段是在该时间之后才添加的,历史快照自然不会包含它们。查询逻辑或变量引用问题
检查代码中parentRef的定义是否正确(你代码里声明了organisationRef但实际用了parentRef,可能存在变量引用错误)。另外,可以尝试跳过查询条件,直接通过文档ID读取单个文档的历史快照验证:const docSnap = await admin.firestore() .collection(ct.parent_coll_) .doc("Y2nZURTmgycxTQ8TnJ") .collection(ct.place_subcoll_) .doc("目标文档ID") .get({ readTime: readTimestamp }); console.log(docSnap.data());如果单个文档读取仍缺失字段,说明问题出在时间点或数据本身;如果单个文档能读到完整字段,那可能是查询条件(如
where('api', '==', api))过滤掉了部分数据,或者分页逻辑(start_id)导致遗漏。数据写入的同步延迟
如果缺失字段是在接近指定时间戳的时刻写入的,可能Firestore的PITR快照还未完成同步。可以尝试将时间戳往后微调几分钟再测试。
内容的提问来源于stack exchange,提问作者LearningPath
相关产品推荐
相关产品推荐

