FIREBASE 警告:使用未指定的索引。您的数据将在客户端下载和过滤

Posted

技术标签:

【中文标题】FIREBASE 警告:使用未指定的索引。您的数据将在客户端下载和过滤【英文标题】:FIREBASE WARNING: Using an unspecified index. Your data will be downloaded and filtered on the client 【发布时间】:2021-11-10 18:07:19 【问题描述】:

@firebase/database:FIREBASE 警告:使用未指定的索引。 您的数据将在客户端下载和过滤。考虑 在 /groups/test/leadPropertyInformations 添加 ".indexOn": "status" 符合您的安全规则以获得更好的性能。

Firebase RTD 规则


  "rules": 
    ".read": "auth != null",
    ".write": "auth != null",
      "groups": 
      ".indexOn": ["leadPropertyInformations/status"]
    
  

JSON 树

注意:您看不到status 属性。但它在第三个箭头路径上。

使用AngularFire查询

getActiveLeadPropertyInformations(): Observable<LeadPropertyInformationModel[]> 
    return this.angularFireDatabase
      .list<LeadPropertyInformationModel>(
        `groups/$this.groupId/leadPropertyInformations`,
        (ref) => ref.orderByChild('status').equalTo('active')
      )
      .valueChanges()

      .pipe(first());
  

你能告诉我我的规则有什么问题吗?

【问题讨论】:

【参考方案1】:

您的规则中需要更多占位符才能使 i 工作:


  "rules": 
    ".read": "auth != null",
    ".write": "auth != null",
      "groups": 
          "$groupId": 
             "leadPropertyInformations":
               
          ".indexOn": ["status"]
         
        
       
      
  

【讨论】:

这也不行?任何线索为什么?上面同样的错误。 用更新的版本试试。那个正好在错误消息的路径上。您还应该考虑索引不会立即发生。我会稍等片刻,具体取决于您在这些路径上有多少元素。 当然,我会尝试并通知您。我只有 2 个节点,因为这是开发模式。 这工作正常。非常感谢!【参考方案2】:

路径不正确(至少不像问题中描述的那样)

你的索引是

leadPropertyInformations/status 

而路径其实是

leadPropertyInformations/22611/status

注意路径中的 22611 - 这意味着您需要添加一些内容来表示子节点,例如 $an_id 以引用问题中显示的子节点。

【讨论】:

这根本不是一个解决方案,因为我需要一个通用的解决方案,因此我不知道预先收集的 id。 @Sampath 你的问题是 你能告诉我我的规则有什么问题吗? 例如您想知道您的规则的问题是什么,而这个解决方案就是解释问题的答案。如果您想知道如何编写通用规则,那么问题应该是这样的 - 如果您查看屏幕截图,则路径不是通用的,而是特定的。

以上是关于FIREBASE 警告:使用未指定的索引。您的数据将在客户端下载和过滤的主要内容,如果未能解决你的问题,请参考以下文章

Firebase 中数据库的警告消息

仅使用动态链接时如何防止firebase数据库停用

如何取消firebase的useEffect订阅

错误尝试通过 callign firebase.app() 使用未安装在您的 Android 项目上的 firebase 模块

数据未插入 Firebase 实时数据库抛出 Android

Ionic Framework 和 Firebase 3.x 版本:此域未授权您的 Firebase 项目的 OAuth 操作