web-dev-qa-db-fra.com

Comment écrire .indexOn pour les clés dynamiques dans Firebase?

J'ai des données configurées comme ceci:

Tasks:{
  Group 1:{
    pushid1:{
      date: 18921949021,
      title: "Do something"
    },
    pushid2:{
      date: 18921949021,
      title: "Do something else"
    }
  },
  Group 2:{
    pushid3:{
      date: 18921949021,
      title: "Do another thing"
    }
  }
}

Je le référence par date, je ne fais donc les tâches qu'après un certain temps.

var now = Date.now();
var taskRef = new Firebase(FB + "/tasks/" + thisGroup);
taskRef.orderByChild('date').startAt(now).on("child_added", function(snap){
  console.log(snap.val());
});

Tout fonctionne bien, pour chaque groupe, je reçois un message d'avertissement disant quelque chose comme ceci:

FIREBASE WARNING: Using an unspecified index.  Consider adding ".indexOn": "date" at tasks/Group 1 to your security rules for better performance

Comment ajouter cela à mes règles de sécurité? Je ne peux pas en ajouter un pour chaque groupe créé par un utilisateur. Existe-t-il une entrée générique d'un certain type?

24
Marty.H

Je suppose que vous cherchez:

{
  ".read": true,
  ".write": true,
  "rules": {
    "Tasks": {
      "$groupid": {
        ".indexOn": "date"
      }
    }
  }
}

La documentation de Firebase est généralement une assez bonne lecture. Passer une heure ou moins dans le guide de sécurité , vous permettra de mieux comprendre ce sujet et bien d'autres.

48
Frank van Puffelen