Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 如何在Cloud Firestore中高效地获取不同集合中具有特定id的文档?_Typescript_Google Cloud Firestore - Fatal编程技术网

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

Typescript 如何在Cloud Firestore中高效地获取不同集合中具有特定id的文档?,typescript,google-cloud-firestore,Typescript,Google Cloud Firestore,我试图在我的数据库中获取使用相同id创建的多个文档。我知道使用collectionGroup和下面的代码可以做到这一点,但我正在寻找一种可能更高效、更干净的方法 我已经阅读了这个问题,它表明使用collectionGroup在字段中存储id以查找文档是非常必要的 在我的例子中,具有myId的文档可以位于两个不同的集合中,因此我希望避免使用collectionGroup,因为我必须在两个单独的集合中这样做: const collectionOneDocs = await firestoreInst

我试图在我的数据库中获取使用相同id创建的多个文档。我知道使用
collectionGroup
和下面的代码可以做到这一点,但我正在寻找一种可能更高效、更干净的方法

我已经阅读了这个问题,它表明使用
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提供的最佳解决方案了


非常感谢

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

因此,您唯一的选择是:

  • 或者为每个集合(名称)运行单独的查询
  • 为集合指定相同的名称

回答下面的问题。但我不确定我是否理解你为什么不想有一个单一的收集组。它们存在的全部目的是让您可以通过给多个集合赋予相同的名称来查询它们。@FrankvanPuffelen谢谢您的回答。我理解它们的用途,但我们的数据库目前的设计方式是,我需要查询具有不同名称的这两组集合,更改这一设置将花费大量时间,因此我正在寻找替代解决方案。我将只使用collectionGroup两次,因为它似乎是这里最好的。再次感谢你的回答。