[英]Firebase: Operation was rejected because the system is not in a state required for the operation's execution
我开始使用 Firebase 中的 collections 组,但我无法使其工作。 我需要按可billable
租约过滤它:
users/portfolios/rents
在这里,我有一个属性,它是租约列表(不是集合,只是一个属性),称为leases
,其中包含一些属性,例如billable
:
我创建了一个单字段索引:
还有一个复合索引(不确定我是否也需要它):
这是我使用 Flutter 的查询:
FirebaseFirestore.instance
.collectionGroup('rents')
.where('billable', isEqualTo: true)
.get()
.then((QuerySnapshot querySnapshot) {
for (var doc in querySnapshot.docs) {
print(doc);
}
});
我得到的错误是:
操作被拒绝,因为系统不在操作执行所需的 state 中。 如果执行查询,请确保已通过 Firebase 控制台对其进行索引。
它还没有被索引?
对于您问题中的查询,您需要在rents
收集组的已finished
字段上的收集组索引,我在您共享的任何屏幕截图中都没有看到。
从您在此处的评论中链接的文档的屏幕截图中:
所以billable
是leases
数组字段的每个项目中的一个值。 无法查询数组字段中的这样一个值,因为==
运算符检查整个数组字段是否与您指定的值相同,而arrayContains
运算符检查是否有任何数组项与您的整个值匹配指定。
常见的解决方法是将要查询的值附加到顶级字段,数组字段或单个 boolean。 例如,如果您将字段hasAnyBillableLeases
添加到rents
文档中,您可以对其进行查询。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.