1 回答
TA贡献1802条经验 获得超5个赞
是否可以通过指定 id 或引用列表而不对每个 id 进行单独查询来检索文档列表?目前看来是不可能的。
对的,这是可能的。任务的whenAllSuccess方法(和其他whenAll
方法)将List
按照传递给whenAllSuccess()
方法的顺序将任务的结果传递给回调。因此,正如您在官方文档中看到的,您可以将 a 作为参数传递Collection<? extends Task<?>>
。这是一个使用引用来做到这一点的例子。
查询文档时是否可以从文档字段中包含引用对象而不对该引用对象进行第二次查询?看来你现在不能。
对的,这是可能的。上面例子的答案,这就是它的作用。如果您想使用单独的查询,您还可以在此处查看另一种方法。您还将获得一份清单。
我有一个商店根集合和该商店中物品的单独根集合。我希望能够按指定的商品对商店进行分类,找到最便宜的地方。但是我有一个问题,因为如果我按价格对商品进行排序并且得到 1000 个结果,我需要执行 1000 次查询来检索包含这些商品的实际商店。我将如何优化这个?
Firestore 中的查询是浅层的:它们只从运行查询的集合中获取项目。无法在单个查询中从顶级集合和其他集合或子集合中获取文档。Firestore 不支持一步跨不同集合的查询。单个查询只能使用单个集合中的文档属性。因此,要解决此问题,您需要为每个产品添加一个新属性,该属性实际上应该是商店的 id。要获取所有商品最便宜的商店,您应该查询商品集合,获取最便宜的商品,然后再次查询以获取该商品所属商店的数据。
编辑:
一般来说,人们高估了他们将获得的使用量。所以再次(一般而言)我建议您不要担心优化,直到您真正需要它。但是,关于#1,是的,它会执行一堆查询,但这就是在 Firestore 中的实现方式。不过别担心,Firestore 在这种情况下工作得很好。关于#2 和#3,不,它不执行查询连接,但是即使您使用两个查询,它的工作速度也非常快。嵌套侦听器没有任何问题。
添加回答
举报