Pablo DelaNoche
Pablo DelaNoche

Reputation: 677

How to write firebase rules with unique ID

this is my problem :

WARN: FIREBASE WARNING: Using an unspecified index. Consider adding ".indexOn": "id_logement" at /images/-KNx2y3mAkJZ-Poa7R03 to your security rules for better performance 

I'm not really a master in firebase and rules so it doesn't really mean something to me ... but i know there is an issue !

This is my data structure :
enter image description here

And this are my rules !

{
  "rules": {
    ".read": "auth != null",
    ".write": "auth != null",
    "accounts" : {
      ".read": true,
        ".write": true,
        ".indexOn": ["userId", "email", "lat",]
    },
     "geofire" : {
      ".read": true,
        ".write": true,
        ".indexOn": ["g"]
    },
      "logements" : {
      ".read": true,
        ".write": true,
        ".indexOn": ["id_account"]
    }



  }
}



I think it's because i don't know how to write this Unique id in rules ! Can you please help me for this ? Thank you

Upvotes: 3

Views: 1495

Answers (1)

adolfosrs
adolfosrs

Reputation: 9389

Answering your question what you are looking for to use in your rules is the $id notation that is a wildcard to represent a branch key.

{
  "rules": {
    ".read": "auth != null",
    ".write": "auth != null",
    ...
    "images": {
        "$imageId1": {
           ".indexOn": "id_logement"
        }
    }
  }
}

But, keep in mind that you should not be storing your imagesUrl inside a two level deep keys. Work your code to have images/imageUniqueKey/imageData structure instead of images/imageUniqueKey1/imageUniqueKey2/imageData. Then you would have your rules as bellow.

"images": {
    ".indexOn": "id_logement"       
}

Upvotes: 5

Related Questions