【问题标题】:Listening for changes in a document and that document's subcollection侦听文档和该文档的子集合中的更改
【发布时间】:2019-04-30 18:32:28
【问题描述】:

我有 Room 对象,它具有一些属性,例如 TitleDescription。它还有一个名为Players 的属性,它是一个用户uid 的字符串数组。

在 Firestore 中,我将 Players 设置为我的 Room 文档的子集合。

我通过使用这个得到Room 数据:

 getRooms(): Observable<Room[]> {
    return this._db.collection<Room>('rooms').valueChanges();
  }();

当我订阅这个时,它的诅咒,不知道Players子集合中是否发生了什么。

有没有办法我可以添加一些代码来监听Players 子集合中的变化。

理想情况下,我想订阅一次,然后收听我的房间/房间文档或房间/房间/播放器子集合中的更改。

【问题讨论】:

  • 也许您正在寻找订阅多个 observables 的方法?
  • 是的,看来我必须这样做。最初,我将 Players 设为 Room 属性,但我改变了方法并将其设为子集合,所以现在我必须解决这个障碍 :)

标签: angular rxjs google-cloud-firestore


【解决方案1】:

Firestore 客户端库不提供此功能。您还必须为每个子集合创建一个集合引用,并为每个子集合添加一个侦听器。每个子集合可以是相同的侦听器对象,但无法避免按名称引用每个子集合。

【讨论】:

  • 谢谢,这就是我所需要的。它现在正在工作。与 Room 有一个 Players 属性(而不是一个子集合)相比稍微麻烦一点,但我发现某些 Firestore 规则更容易实现,Players 是一个子集合
  • 是的,总有一个权衡,但幸运的是,无论哪种方式,性能都没有真正的变化。
猜你喜欢
  • 2020-01-07
  • 2020-03-17
  • 2018-10-21
  • 2012-06-09
  • 2020-07-30
  • 2018-05-21
  • 2019-11-13
  • 2018-12-22
  • 1970-01-01
相关资源
最近更新 更多