Firebase 如何在分页之前过滤数据

Firebase 如何在分页之前过滤数据,firebase,flutter,google-cloud-firestore,Firebase,Flutter,Google Cloud Firestore,我正在申请租车。我通过分页(限制3)获取数据,过滤它们以降低价格,但在某些情况下,公司可以提供折扣。当这种情况发生时,我的数据库过滤将变得无效。例如,数据库中有4辆车(40美元、50美元、60美元、70美元)。使用此代码筛选数据时: var availableCars = await _firestore .collection('carMini') .where('locations', arrayContains: order.address)

我正在申请租车。我通过分页(限制3)获取数据,过滤它们以降低价格,但在某些情况下,公司可以提供折扣。当这种情况发生时,我的数据库过滤将变得无效。例如,数据库中有4辆车(40美元、50美元、60美元、70美元)。使用此代码筛选数据时:

var availableCars = await _firestore
        .collection('carMini')
        .where('locations', arrayContains: order.address)
        .orderBy('carPrice', descending: false)
        .limit(3)
        .get();

即使第四辆车的折扣价格比其他车低, 此价格稍后显示,因为数据带有分页。
有什么方法可以预先设置此值吗?

Firestore查询无法根据这样的计算值进行筛选。使单个查询工作的唯一方法是将有效/折扣价格存储在单独的字段中,并在该字段上进行订购/筛选

var availableCars = await _firestore
    .collection('carMini')
    .where('locations', arrayContains: order.address)
    .orderBy('discountedCarPrice')
    .limit(3)
    .get();

折扣价格因每辆车的状况而异。搜索时也会指定这些条件。我如何动态地做到这一点?或者我可以删除分页并获取此位置的所有车辆。你认为分页对这样的应用程序有那么重要吗?分页在许多应用程序中被高估了,但这只是我的观点。您必须确定是否需要分页。对于您的“如何动态执行此操作?”:条件只能根据其查询的文档中存储的值进行评估(因此在您的情况下,
carMini
)。您必须在每个文档中存储要查询的值,就像我在回答中使用的
discountedCarPrice
一样。谢谢您的评论。有些地方我使用分页,但我选择不在这里使用。好的。如果我的答案有用,请单击向上投票按钮(▲) 在它的左边(您可能还没有足够的声誉)。如果它回答了您的问题,请单击复选标记(✓) 接受它。这样别人就会知道你已经得到了(足够的)帮助。也请参见