Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

Indizieren Sie Ihre Daten

Mit Firebase können Sie Ad-hoc-Abfragen Ihrer Daten mit einem beliebigen untergeordneten Schlüssel durchführen. Wenn Sie im Voraus wissen, wie Ihre Indizes .indexOn werden, können Sie sie über die .indexOn Regel in den Sicherheitsregeln Ihrer Firebase-Echtzeitdatenbank definieren, um die .indexOn zu verbessern.

Datenindizes definieren

Firebase bietet leistungsstarke Tools zum Bestellen und Abfragen Ihrer Daten. Mit Firebase können Sie Ad-hoc-Abfragen für eine Sammlung von Knoten mit einem beliebigen untergeordneten Schlüssel durchführen. Wenn Ihre App wächst, nimmt die Leistung dieser Abfrage ab. Wenn Sie Firebase jedoch über die Schlüssel informieren, die Sie abfragen, indiziert Firebase diese Schlüssel auf den Servern, wodurch die Leistung Ihrer Abfragen verbessert wird.

Indizierung mit orderByChild

Dies lässt sich am einfachsten anhand eines Beispiels erklären. Wir alle bei Firebase sind uns einig, dass Dinosaurier ziemlich cool sind. Hier ist ein Ausschnitt aus einer Beispieldatenbank mit Dinosaurier-Fakten. Wir werden es verwenden, um zu erklären, wie .indexOn mit orderByChild() funktioniert.

{
  "lambeosaurus": {
    "height" : 2.1,
    "length" : 12.5,
    "weight": 5000
  },
  "stegosaurus": {
    "height" : 4,
    "length" : 9,
    "weight" : 2500
  }
}

Stellen wir uns vor, dass wir in unserer App die Dinosaurier oft nach Name, Größe und Länge sortieren müssen, aber niemals nach Gewicht. Wir können die Leistung unserer Abfragen verbessern, indem wir Firebase diese Informationen mitteilen. Da der Name der Dinosaurier nur die Schlüssel sind, optimiert Firebase bereits für Abfragen nach Dinosauriernamen, da dies der Schlüssel des Datensatzes ist. Wir können .indexOn , um Firebase .indexOn , Abfragen auch hinsichtlich Höhe und Länge zu optimieren:

{
  "rules": {
    "dinosaurs": {
      ".indexOn": ["height", "length"]
    }
  }
}

Wie bei anderen Regeln können Sie auf jeder Ebene Ihrer Regeln eine .indexOn Regel angeben. Wir haben es für das obige Beispiel auf der Stammebene platziert, da alle Dinosaurierdaten im Stamm der Datenbank gespeichert sind.

Indizierung mit orderByValue

In diesem Beispiel zeigen wir, wie .indexOn mit orderByValue() funktioniert. Nehmen wir an, wir erstellen eine Rangliste der Dino-Sportergebnisse mit den folgenden Daten:

{
  "scores": {
    "bruhathkayosaurus" : 55,
    "lambeosaurus" : 21,
    "linhenykus" : 80,
    "pterodactyl" : 93,
    "stegosaurus" : 5,
    "triceratops" : 22
  }
}

Da wir orderByValue () zum Erstellen der Bestenliste verwenden, können wir unsere Abfragen optimieren, indem wir eine .value Regel an unserem Knoten /scores .value hinzufügen:

{
  "rules": {
    "scores": {
      ".indexOn": ".value"
    }
  }
}