Home > Software design >  FIREBASE WARNING: Using an unspecified index. Your data will be downloaded and filtered on the clien
FIREBASE WARNING: Using an unspecified index. Your data will be downloaded and filtered on the clien

Time:09-16

@firebase/database: FIREBASE WARNING: Using an unspecified index. Your data will be downloaded and filtered on the client. Consider adding ".indexOn": "status" at /groups/test/leadPropertyInformations to your security rules for better performance.

Firebase RTD Rules

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

JSON Tree

Note: You cannot see status property. But it is there on the 3rd arrow path.

enter image description here

Query using AngularFire

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

      .pipe(first());
  }

Can you tell me what was the issue with my Rule?

CodePudding user response:

You would need more placeholders in your rule to make i work:

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

CodePudding user response:

The path is not correct (at least not as it's described in the question)

Your index is

leadPropertyInformations/status 

and the path is actually

leadPropertyInformations/22611/status

Note the 22611 in the path

  • Related