【问题标题】:Firestore SnapshotChanges - Listening for New DocumentFirestore SnapshotChanges - 监听新文档
【发布时间】:2021-01-08 19:41:40
【问题描述】:

我正在使用 Firestore 创建一个实时滚动分页服务。我计划通过将 10 个实时文档的限制加载到将显示在屏幕上的数组来编写它。当调用loadMore()函数时,使用startAfter函数再加载10个non-realtime文档等。这个想法是从Firebase's Youtube Channel

想法...问题

一旦我加载了一些实时文档,我想实时监听 new 文档,在数组中添加或更新它们。 collectionRef.snapshotChanges() 发出 DocumentChangeAction[]。数组中的单个对象如下所示:

{
   doc: n {Df: e, E_: t, kf: n, Mf: false, Of: false, …}
   newIndex: 0
   oldIndex: -1
   type: "added"
}

它表示对象经历的最后一个事件是added。很好,但它没有注明对象何时是 not-seen-in-this-query-before.-aka,-just-added-and-newly-loaded

问题 有谁知道如何通过 Firestore 实时找到全新的对象?

旁注: 我可能完全错误地接近分页,但我相信这是完成任务的一种负责任的方式(也就是说,如果可以这样做的话)。

【问题讨论】:

标签: angular firebase google-cloud-firestore angularfire


【解决方案1】:

Firestore 不知道什么是“新”文档。听起来您应该在每个记录创建时间的文档中存储一个时间戳。然后,您可以在范围过滤器中使用此时间戳来查询您定义的“新”文档。

如果您对“新”的定义是大于从先前查询中看到的最大时间戳的任何文档,则只需在查询中使用该时间戳值。然后,您可以收听该查询的结果以实时获取任何较新的文档。

另请参阅:Firestore query by date range

【讨论】:

  • 这可能有效。对于查询中第 10 个文档之后开始的文档,我可以调用单个 get()。使用get() 中第一个文档的时间戳创建大于时间戳的项目查询 - 因此创建新添加文档的订阅。我很感激你的回答。它让我头晕目眩。我将在今天晚些时候查看文档,如果有帮助,请标记为正确。 ?
猜你喜欢
  • 2020-03-15
  • 1970-01-01
  • 1970-01-01
  • 2019-05-24
  • 1970-01-01
  • 2020-10-27
  • 2019-05-27
  • 2020-11-30
  • 1970-01-01
相关资源
最近更新 更多