删除了 firestore 中的复合索引,但我的查询仍然有效

问题描述 投票:0回答:1

我正在清理 Firestore 中的旧复合索引时,我意识到我错误地删除了一个复合索引,但我的查询仍然可以完美运行。最初,如果没有该索引,它就无法工作。

这是查询:

  const allCredits = await tx.get(
    db.collection(`users/${uid}/credits`)
    .where('expiresAt', '>', Date.now())
    .orderBy('expiresAt', 'desc'),
  );

在 Firebase 中删除复合索引时是否存在一些缓存或延迟? 我不想最终陷入该查询突然停止工作的情况,因为某些索引缓存已被清除。它仍然运行良好。有什么想法吗?

谢谢!

firebase google-cloud-firestore
1个回答
0
投票

您显示的查询不需要任何复合索引。 它仅对一个字段 (expiresAt) 进行过滤和排序,因此它可以使用为每个单独字段创建的默认索引。 只有当有多个字段涉及过滤和排序时才需要复合索引。

来自文档,强调我的:

复合索引基于索引字段的有序列表存储集合中所有文档的排序映射。 注意:每个复合索引最多可以有一个数组字段。

Cloud Firestore 使用复合索引来支持单字段索引尚不支持的查询。

我只能假设您错误地认为这个需要复合索引的特定查询。

© www.soinside.com 2019 - 2024. All rights reserved.