是否应该通过 AngularFirestoreCollection 更新 AngularFire 中的 Firstore 项目?
Should updates to Firstore items in AngularFire be done through the AngularFirestoreCollection?
在我的应用程序中,我有一个列表需要 "or" 条件。但是,作为 docs say:
In this case, you should create a separate query for each OR condition and merge the query results in your app.
因此,在我的服务中,我管理两个查询并将它们作为单个可观察列表呈现给消费者。
更新时出现问题。我可以选择做额外的工作来匹配需要更新的项目到正确的集合,所以我可以执行以下操作:
myCollection.doc(item.id).update(item);
或者我可以让这更简单:
angularFirestore.doc(`path/to/${item.id}`).update(item);
我假设第一种方法会导致更快的更新,因为我使用的是相同的参考,它会乐观地立即更新。并且后者会更慢,因为它会通过更新持久层然后收集引用得到通知(可能仍然是一小段时间)来进行更多的循环。
然而,以上所有都是假设。我只是用一些随机实例来支持这一点,在这些实例中,我看到更新或删除需要一两秒钟才能显示在视图的其他部分,但我无法真正检查这个过程。
有谁知道以上是否正确?我应该做额外的工作来编写集合引用还是 angularfire(and/or firestore) 处理这个并使它们在幕后有效地进行相同的操作?
AngularFire2 是 RxFire 的一个薄包装器,它本身是 Firebase JavaScript SDK 的一个相对薄的包装器。
通过 AngularFire 更新文档与直接通过 JavaScript SDK 更新文档之间应该没有显着的性能差异。在这两种情况下,大部分时间都花在 JavaScript SDK 以及客户端和服务器之间的线路上。出于这个原因,我通常直接通过 JavaScript SDK 进行更新,因为它通常更直接一些,并且 AngularFire 抽象对我来说在写操作方面没有什么优势。鉴于 AngularFire 构建于此 SDK 之上,它会立即获取更改,即使更改不是通过 AngularFire 进行的。
如果您遇到的情况似乎并非如此,我建议您创建一个问题,使用最少的 complete/standalone 代码重现该问题。
在我的应用程序中,我有一个列表需要 "or" 条件。但是,作为 docs say:
In this case, you should create a separate query for each OR condition and merge the query results in your app.
因此,在我的服务中,我管理两个查询并将它们作为单个可观察列表呈现给消费者。
更新时出现问题。我可以选择做额外的工作来匹配需要更新的项目到正确的集合,所以我可以执行以下操作:
myCollection.doc(item.id).update(item);
或者我可以让这更简单:
angularFirestore.doc(`path/to/${item.id}`).update(item);
我假设第一种方法会导致更快的更新,因为我使用的是相同的参考,它会乐观地立即更新。并且后者会更慢,因为它会通过更新持久层然后收集引用得到通知(可能仍然是一小段时间)来进行更多的循环。
然而,以上所有都是假设。我只是用一些随机实例来支持这一点,在这些实例中,我看到更新或删除需要一两秒钟才能显示在视图的其他部分,但我无法真正检查这个过程。
有谁知道以上是否正确?我应该做额外的工作来编写集合引用还是 angularfire(and/or firestore) 处理这个并使它们在幕后有效地进行相同的操作?
AngularFire2 是 RxFire 的一个薄包装器,它本身是 Firebase JavaScript SDK 的一个相对薄的包装器。
通过 AngularFire 更新文档与直接通过 JavaScript SDK 更新文档之间应该没有显着的性能差异。在这两种情况下,大部分时间都花在 JavaScript SDK 以及客户端和服务器之间的线路上。出于这个原因,我通常直接通过 JavaScript SDK 进行更新,因为它通常更直接一些,并且 AngularFire 抽象对我来说在写操作方面没有什么优势。鉴于 AngularFire 构建于此 SDK 之上,它会立即获取更改,即使更改不是通过 AngularFire 进行的。
如果您遇到的情况似乎并非如此,我建议您创建一个问题,使用最少的 complete/standalone 代码重现该问题。