【问题标题】:Accessing top-level collection in Firebase Firestore访问 Firebase Firestore 中的顶级集合
【发布时间】:2019-01-16 11:45:33
【问题描述】:

我目前正在使用 Firebase 开发一个 Angular 5 的网络应用程序。无论如何,我为此目的使用 angular/firestore2。

我遇到的问题是我无法访问我的顶级收藏。我的结构类似于

Collection(top level collection ['events']) -> Docs(与userId相关) -> Collection -> Docs

如果我试图在

中访问顶级

return this.db.collection('events').valueChanges();

它返回空数组,尽管该集合中有文档。无论如何,如果我制作新的自定义集合,例如:

集合(顶级集合 ['tests'])-> 文档

我尝试在

中访问该集合

return this.db.collection('tests').valueChanges();

它返回包含文档的数组。我真的很困惑,希望有任何帮助。

我正在使用 https://github.com/angular/angularfire2 进行 Firestore/存储连接。

【问题讨论】:

  • 您在哪里进行您想要检测的更改?在事件集合下的文档中还是在子集合中?
  • @RenaudTarnec 这取决于。如果用户没有任何已发布的事件,则在创建他的第一个事件时,我将在顶级集合中创建一个带有用户 ID 的文档仅供参考,之后总是创建一些新事件时,在子中添加新文档- 收藏。
  • @RenaudTarnec 之后,我将为事件创建编辑功能,在其中我将基于 userId 引用事件,因此 Collection(events) -> Doc(userId) -> Collections(weekdayEvents) ->文档(.update(新对象))

标签: angular firebase google-cloud-firestore


【解决方案1】:

我不能 100% 确定接下来会发生什么,因为我不使用 angular/firestore2,但它在 documentation 中说“AngularFirestoreCollection 服务是原生 Firestore SDK 的 CollectionReferenceQuery 类型的包装器”。

Firestore 中的查询是浅查询,因此当您在子集合下的文档中进行修改时,不会触发在集合的父文档中声明的侦听器。

“标准”Javascript SDK documentation 中对onSnapshot() 方法的解释类似:“您可以使用onSnapshot() 方法收听a 文档。”它不包括文档子集合中的更改。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-20
    • 1970-01-01
    • 2020-05-25
    • 2022-01-05
    • 2018-04-30
    • 1970-01-01
    • 2020-08-19
    相关资源
    最近更新 更多