繁体   English   中英

Firebase:操作被拒绝,因为系统不在操作执行所需的 state 中

[英]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字段上的收集组索引,我在您共享的任何屏幕截图中都没有看到。


从您在此处的评论中链接的文档的屏幕截图中:

所以billableleases数组字段的每个项目中的一个值。 无法查询数组字段中的这样一个值,因为==运算符检查整个数组字段是否与您指定的值相同,而arrayContains运算符检查是否有任何数组项与您的整个值匹配指定。

常见的解决方法是将要查询的值附加到顶级字段,数组字段或单个 boolean。 例如,如果您将字段hasAnyBillableLeases添加到rents文档中,您可以对其进行查询。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM