由于我正在使用angular / firebase,因此我对Rxjs与Angular 2+上的firebase的良好使用感到困惑,尤其是与带firebase.on / once的Observable / Subject一起使用时。我没有找到很好的例子。
首先,我认为我对每个人的理解都是可以的(合并它们时我很困惑),不确定我的解释:
一些我所看到的问题/例子(使我感到困惑):
答案 0 :(得分:1)
我将一一回答您的问题:
我认为要注意的最重要的一点是,可观察变量很冷,这意味着您可以创建复杂的数据流,直到有人订阅了该数据流,它们才会被执行,这与查询不同,查询是在创建时立即执行的
Observables还允许查询关联,查询之间的依赖关系(例如,成为朋友的朋友)。此外,Observables提供了一种侦听数据更改并在每次更改时重复相同行为的简单方法。
这个答案很简单:总是。由于Firebase是实时的,因此您应该在此之后执行所有操作,并保持异步。同样,Subject
扩展了Observable
,Subject
本质上是一个Observable
,它公开了其emit
方法,允许您在其上发射自定义数据。
为此,我完全鼓励您在Firebase上使用Firestore,原因很简单:定价(也由于数据模型tbh)。 Firestore是一个文档数据库,您的用例完全是一个文档数据库。它比firebase便宜,因为它可以扩展查询量,而不是像firebase那样传输数据。
另外,对整个对象进行udpat处理在实现方面更简单,并且需要较少的查询(如果您使用的是Firestore,则必须更新整个对象,因为它不是像Firebase这样的巨型对象数据库),但是它具有一个简单的缺陷:如果用户A更新了给定的书作者姓名,而用户B更新了同一本书,但仅是书名,那么使用同一对象可能会导致最后一个查询覆盖另一本书,但这是非常罕见的竞争条件,我我不确定您应该考虑一一更新字段的代价。