【问题标题】:Firestore - get collection Entries from document in collectionFirestore - 从集合中的文档中获取集合条目
【发布时间】: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 的文档,并且在匹配时还应该交付集合还是我理解不对?

标签: javascript firebase ionic-framework google-cloud-firestore


【解决方案1】:

如果您用红色圈出的是一个集合,则您必须知道集合名称,因为您无法[获取文档的“所有子集合”(https://stackoverflow. 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/…
猜你喜欢
  • 2018-04-04
  • 2018-04-09
  • 1970-01-01
  • 1970-01-01
  • 2020-08-08
  • 2021-12-16
  • 2019-09-17
  • 1970-01-01
  • 2019-11-13
相关资源
最近更新 更多