当集合大小太大时,Firebase 侦听器不会触发
Firebase listener doesn't trigger when collection size is too big
_firestoreDb.Collection(collectionPath).Listen(callback);
当我收听包含几个(数百个)文档的集合时,收听器工作正常。但是,当集合开始变得庞大(超过 30-40k)时,它永远不会触发回调。 'initial call' 和 creation/deletion 都不会发生。
CollectionGroup
似乎有相同的行为。
查询侦听器有大小限制吗?我没有在 Firebase 文档中找到任何提及。
When I listen to a collection that contains a few (hundreds) documents, the listener works fine.
这是预期的行为。
However when the collection starts getting bulky (over 30-40k), it never triggers the callback.
这也是预期的行为,因为读取该数量的数据需要很长时间。除此之外,它也非常昂贵,因为 Firestore 中的所有内容都与 reads and writes you perform.
的数量有关
一次读取30-40k个文档,可以算得上是海量数据了。除此之外,我不认为有人会对阅读所有这些数据感兴趣。所以你最好的选择是 limit the number of documents your read.
除此之外,最常见的方法是始终阅读您在屏幕上显示的文档的确切数量。话虽如此,您应该考虑以更小的块获取数据。最有可能 10-20 个文件。如果您的应用的用例需要,您也可以考虑实施 pagination。
_firestoreDb.Collection(collectionPath).Listen(callback);
当我收听包含几个(数百个)文档的集合时,收听器工作正常。但是,当集合开始变得庞大(超过 30-40k)时,它永远不会触发回调。 'initial call' 和 creation/deletion 都不会发生。
CollectionGroup
似乎有相同的行为。
查询侦听器有大小限制吗?我没有在 Firebase 文档中找到任何提及。
When I listen to a collection that contains a few (hundreds) documents, the listener works fine.
这是预期的行为。
However when the collection starts getting bulky (over 30-40k), it never triggers the callback.
这也是预期的行为,因为读取该数量的数据需要很长时间。除此之外,它也非常昂贵,因为 Firestore 中的所有内容都与 reads and writes you perform.
的数量有关一次读取30-40k个文档,可以算得上是海量数据了。除此之外,我不认为有人会对阅读所有这些数据感兴趣。所以你最好的选择是 limit the number of documents your read.
除此之外,最常见的方法是始终阅读您在屏幕上显示的文档的确切数量。话虽如此,您应该考虑以更小的块获取数据。最有可能 10-20 个文件。如果您的应用的用例需要,您也可以考虑实施 pagination。