2015-10-19 2 views
18

Ich habe Daten wie folgt ein:Wie schreibt man .indexOn für dynamische Schlüssel in Firebase?

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" 
    } 
    } 
} 

ich es nach dem Datum verweisen, so habe ich nur die Aufgaben nach einer bestimmten Zeit gemacht bekommen.

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()); 
}); 

Das alles funktioniert gut, für jede Gruppe ich erhalte eine Warnmeldung, so etwas wie dies zu sagen:

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

Wie füge ich das meine Sicherheitsregeln? Ich kann für jede Gruppe, die ein Benutzer erstellt, keinen hinzufügen. Gibt es einen Wildcard-Eintrag eines bestimmten Typs?

+0

Hallo Marty. Hast du das jemals gelöst? Oder beschlossen, die Struktur zu ändern? Danke – jovanjovanovic

+0

@jovanjovanovic Franks Antwort funktionierte für mich. –

Antwort

34

Ich glaube, Sie suchen:

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

Die Dokumentation Firebase ist in der Regel eine ziemlich gute Lektüre. Wenn Sie eine Stunde oder weniger in der security guide verbringen, werden Sie dieses und viele andere Themen besser verstehen.

+1

Ich bekomme immer noch "FIREBASE WARNING: Verwenden Sie einen nicht spezifizierten Index. Ziehen Sie" .IndexOn ":" Kliniken/1/Datum "bei/Anforderungen an Ihre Sicherheitsregeln für eine bessere Leistung" – Steve

+1

Ich habe das gleiche Problem mit zwei Ebenen auf Authentifizierungsanbieter (z. B. Google, Twitter) und die ID (z. B. E-Mail). Beides kann ich nicht hart codieren, welche Option muss ich bei den Blattelementen indizieren, wenn zwei Elternstufen wir nicht hart codieren können. Schätze jede Hilfe – user1687711

+0

@ marty-h Die '$ groupid' war der Platzhaltereintrag, nach dem der Fragesteller gefragt hatte. – KarolDepka

Verwandte Themen