问题描述
widget.filteredRef= FirebaseFirestore.instance
.collection('users')
.doc(widget.uid)
.collection('incomes')
.where('date',isGreaterThanorEqualTo: startTimeStamp,isLessthanorEqualTo: endTimeStamp)
.where('amount',isGreaterThanorEqualTo: amountFrom,isLessthanorEqualTo: amountTo)
.snapshots();
嗨,我是新手。我想指定一个查询,以从特定日期范围和用户数量中检索收入数据,作为颤动云Firestore中的列表。例如,日期从01/01/2020到01/02/2020的金额为0到1000。但是使用两个where子句或两个orderby或一个orderby和一个where子句不起作用。请告诉我流的方式。
这是我的消防局收入文件链接: https://drive.google.com/file/d/1lAbF1t641nBK4hRn5zLT-4eNUQ-FyajW/view?usp=sharing
解决方法
您将需要在Firebase控制台本身中创建一个索引。这是因为firebase基本上存储文档的长数组,并且执行类似以下操作:Query = CorrectIndex[start:end]
,如果不对数据进行排序则无法执行。它为文档的每个项目都创建了这样的索引,但没有任何组合(对于您可能不需要的东西而言,这将是昂贵的)。因此,您需要告诉Firebase它需要为要使用的每个组合创建正确排序的索引,这样在您开始查询时它可以很快。如果我没记错的话,在您的错误消息中,已经提供了指向Firebase控制台的链接。单击该按钮,系统将指导您完成该过程。
但是,这不是完全正确的。您将需要重新制作该索引以使用“ CollectionGroup”。其他一切都可以保持不变。无论如何,关于firebase的一些不错的系列是这样的:https://www.youtube.com/watch?v=Ofux_4c94FI。