如何在Cloud Firestore中有效地获取不同集合中具有特定ID的文档?

时间:2020-10-18 20:14:11

标签: typescript google-cloud-firestore

我正试图在数据库中获取使用相同ID创建的多个文档。我知道可以在下面显示的代码中使用collectionGroup来做到这一点,但我正在寻找一种可能更有效,更清洁的方法。

我已经阅读了问题How to perform collection group query using document ID in Cloud Firestore,该问题表明必须使用collectionGroup将ID存储在字段中以找到文档。

在我的情况下,带有myId的文档可以位于两个不同的集合中,所以我想避免使用collectionGroup,因为我必须在这样的两个单独的集合中这样做:

const collectionOneDocs = await firestoreInstance.get().collectionGroup('collectionOne').where('id', '==', myId).get();
const collectionTwoDocs = await firestoreInstance.get().collectionGroup('collectionTwo').where('id', '==', myId).get();

此代码对我有用,但是我想执行一次操作来访问文档,并且也避免将id保存为文档中的字段,因为这并不是必需的。那么,在Firestore中是否总能找到具有特定id的所有文档,或者这已经是Firestore可用的最佳解决方案?

非常感谢!

1 个答案:

答案 0 :(得分:1)

如果集合的名称不同,则无法通过单个查询从它们中获取结果。

因此,您唯一的选择是:

  • 为每个集合(名称)运行一个单独的查询。
  • 为集合提供相同的名称。