误删Firestore复合索引后查询仍可用,是否存在缓存或延迟?
Firestore删除复合索引后的延迟与查询稳定性问题
你在清理Firestore旧复合索引时误删了某个查询依赖的索引,但当前这个查询仍能正常运行:
const allCredits = await tx.get( db.collection(`users/${uid}/credits`) .where('expiresAt', '>', Date.now()) .orderBy('expiresAt', 'desc'), );
你想知道Firestore删除索引是否存在缓存或延迟,以及是否会出现后续缓存失效导致查询突然失败的情况。
解答:
- Firestore删除复合索引确实存在延迟生效的情况,延迟时长通常在几分钟到几小时之间,具体取决于索引的数据规模和Firestore的系统负载。在这段过渡期内,已标记删除的索引还会被临时用来处理查询请求,所以你现在的查询还能正常执行。
- 等后端完成索引删除的同步操作后,这个查询会直接失败,抛出要求创建复合索引的错误——不存在“缓存逐步失效”的过程,而是突然无法运行。
- 建议你立刻重新创建对应的复合索引:索引字段选择
expiresAt(排序方向无需严格匹配查询的desc,Firestore会自动适配),关联集合路径设为users/{uid}/credits。索引创建后需要一段时间生效,期间查询可能仍会报错,等索引状态显示“已启用”后就能恢复正常。
内容的提问来源于stack exchange,提问作者slowloris
相关产品推荐
相关产品推荐

