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 数据库中的字段从集合中搜索文档?