Firestore - 从集合中的文档中获取集合条目

Posted

技术标签:

【中文标题】Firestore - 从集合中的文档中获取集合条目【英文标题】:Firestore - get collection Entries from document in collection 【发布时间】:2022-01-21 18:27:39 【问题描述】:

我想得到下面屏幕截图中红色标记的值。

我也用谷歌尝试了很多东西,但我没有得到一个好的结果。

到目前为止我的代码:

firestore.collection('chats').doc(this.uid).get().subscribe(data => 
      alert(data.data());
    );

【问题讨论】:

你用红色圈起来的东西是什么?收藏?一份文件?或者是其他东西?请注意,集合通常应该具有已知名称,因为您无法获取文档的“所有子集合”,因此您需要已经知道集合的名称。一旦你这样做,访问它是firestore.collection('chats').doc(this.uid).collection("the subcollection name").get() 嗯,如果我不知道名字怎么办?是一个生成的字符串。我怎样才能改变我的结构来解决这个问题? :// 也许我们可以通过这种方式解决这个问题:我请求文档:firestore.collection('chats').doc(this.uid).what here to get it?然后我应该获得可以为 this.uid 制作 IF 的文档,并且在匹配时还应该交付集合还是我理解不对? 【参考方案1】:

如果您用红色圈出的是一个集合,则您必须知道集合名称,因为您无法[获取文档的“所有子集合”(https://***. com/questions/48258632/fetching-all-collections-in-firestore/48258777#48258777) 在客户端 SDK 中。

因此,您需要知道集合的名称。完成后,访问它是:

firestore
  .collection('chats')
  .doc(this.uid)
  .collection("the subcollection name")
  .get()

【讨论】:

我可以像这个shema那样做吗?从一开始:聊天将是一个文档,而不是一个带有 this.uid 的集合,然后又是一个文档,这可能吗?如果是的话,你能不能给我一个例子如何做到这一点? :) 谢谢! 没有。 Firestore 的数据模型是一个非常严格的序列:根由集合组成。每个集合都包含文档。并且每个文档都可以再次包含集合。如果要在文档下生成 ID,这些 ID 通常是有意义的。使用该名称创建一个集合,例如 messages 如果您要存储他们的聊天消息,或者 friends 如果您要存储他们的朋友进行聊天。即使您只有一个子集合,也可以给它一个已知名称并在您的代码中使用它。 感谢您的解释!最后一个问题:我重新设计了我的结构,所以它应该可以工作,但我不知道如何推送一个数组,以这种方式,现有的数组条目保留在这里,只在什么数组中添加一个条目。我是这样尝试的:this.afStore.collection('users').doc(this.uid).get().subscribe(userData => userData.data()['openChats'].forEach(chatUid => alert(chatUid) ); userData.ref.set( openChats: Array.of(this.o_uid) , merge:true) ); 这似乎是一个新问题,但您可能想看看这里:firebase.google.com/docs/firestore/manage-data/…

以上是关于Firestore - 从集合中的文档中获取集合条目的主要内容,如果未能解决你的问题,请参考以下文章

从嵌套在Firestore中的文档中的集合中获取数据的最佳方法是什么?

使用 ionic 3 中的 Angularfire2 从 Firestore 获取集合文档的 ID [重复]

我可以获取从 Firestore 集合组查询中获取的文档的路径或引用吗?

如何根据 Firestore 数据库中的字段从集合中搜索文档?

如何从 Firestore 集合中获取所有文档并将它们返回到数组列表中? [复制]

Firestore:如何在集合中获取随机文档