我正在尝试制作数据块(每个10个)作为查询。
limitToLast()
和limitToFirst()
互不影响,但在一起时会导致应用崩溃。
query = db_reference_type.limitToLast((int) (long_total_buildings - (long_list_page * 10))).limitToFirst(10);
With long_list_page = 0 and long_total_buildings = 10
query = db_reference_type.limitToLast(10).limitToFirst(10);
当程序到达该行时,应用程序崩溃。
答案 0 :(得分:0)
无法在单个查询中组合limitToFirst()
和limitToLast()
。您似乎正在构建一个分页系统,并寻找Firebase中不存在的offset()
条件。
了解Firebase如何处理您的请求后,更容易理解可能的情况。
当在某个位置接收查询时,Firebase会在订购查询的属性上(如果未指定顺序,则在键上)检索该位置上项目的索引。
然后找到您指示要开始从中返回项目的值。因此,这是对查询进行排序的属性的值(如果未指定顺序,则对键进行排序)。
然后找到您指示要结束返回项目的值。这也是您对查询进行排序的属性的值(如果未指定顺序,则对键进行排序)。
因此,在这一点上,数据库在索引中具有一系列值,并且通过关联与这些值匹配的项的键。
然后从开始(如果使用limitToFirst()
)或从结束(如果使用limitToLast
)开始按项目数剪切范围内的项目。
最后,它返回符合所有条件的其余项。
请注意,您传递给limitToFirst
/ limitToLast
的值仅在此过程的最后一步中使用。您似乎正在尝试在步骤3中未使用它。