如何避免读取对Firestore不感兴趣的文档?

时间:2020-05-22 15:05:54

标签: firebase google-cloud-firestore

我收集了2k个文档。我已经实现了分页,因此一次可以获取10个文档。文档如下所示:

docId
  - name: "itemName"
  - price: 20
  - lastModified: May 22, 2020 at 1:23:22 PM UTC

要获取前10个元素,请使用以下查询:

Query query = db.collection("items").orderBy("name", ASCENDING).limit(10);

要获取下10个文档,我使用:

Query nextQuery = query.startAfter(lastVisibleDocumentSnapshot);

第一次打开应用程序时,我滚动了3页,因此总共30个文档将添加到缓存中。第二次打开应用程序时,我不想再次下载文档。由于我拥有lastModified字段,因此我可以查询:

db.collection("items").whereGreaterThan("lastModified", someDate);

这将返回所有新的/修改的文档,这很不好,因为如果添加了200个文档,我会为它们付费。换句话说,对于我可能不感兴趣的文档,我将支付200次读取。只有更改了这30个文档中的一个,我如何才能进行读取操作?

1 个答案:

答案 0 :(得分:0)

听起来您要执行的操作似乎无法处理您的数据。您所查询的查询范围不能与范围查询的字段不同。因此,如果您在lastModified上进行范围查询,则也无法按name进行订购。而且,如果您按name订购,则不能按lastModified使用范围过滤器。