我想延迟加载一个列表,同时应该对已经获取的数据进行实时更新。
第一批:
const querySnapshot = await query.get();
const customers = querySnapshot.docs.map(doc => ({
id: doc.id,
...doc.data()
}));
对于第二批和后续批次如何使用同一个侦听器? 否则,对于每个批次,我都必须创建一个新的侦听器,我认为这不是一个好的策略。 或者有很多听众可以吗?每个使用该应用程序的用户都会创建许多侦听器。
我想延迟加载一个列表,同时应该对已经获取的数据进行实时更新。
当您在代码中使用
get()
调用时,如下面的代码行所示:
const querySnapshot = await query.get();
您仅从 Firestore 读取数据一次,您没有监听任何实时更新。如果您需要在结果集中的某些内容发生更改时实时收到通知,那么您应该使用持久侦听器。
对于第二批和后续批次如何使用同一个侦听器?否则,对于每个批次,我都必须创建一个新的侦听器,我认为这不是一个好的策略。
为什么你认为创建听众不是一个好的策略?这实际上是一件好事。您可以创建任意数量的侦听器,但前提是您在不再需要它们时分离它们。
每个使用该应用程序的用户都会创建许多监听器。
那就没问题了。您可以使用的侦听器数量没有限制。听众很便宜。您应该担心的一件事是您阅读的文档数量。由于我们无法看到您的
query
是如何定义的,我假设已经使用 limit(n) 调用限制了文档数量。如果您没有添加这样的限制,我建议您添加。如果您有大量文档,更明智的解决方案是使用分页,并以较小的块加载数据。