Hierarchische Datenstruktur in Firebase abfragen

Ich habe eine App, die Daten in einer Baumstruktur speichert, die ich in Firebase beibehalten möchte.

Jeder Knoten im Baum sieht folgendermaßen aus:

    node:
        size: // the number of items
        data: // array of items
        0: // child node 0
        1: // child node 1
        2: // child node 2
        3: // child node 3

Also im Grunde ist es ein Quad-Baum. Das Problem ist, wenn ich den Stammknoten des Baums lade, er wird riesig, weil die Firebase einen Snapshot erstellt, der den gesamten Baum enthält. Es wäre gut, wenn ich die Baumstruktur lesen könnte, aber zuerst ohne das 'Daten'-Feld, und dann das' Daten'-Feld in einigen Knoten selektiv laden könnte.

Derzeit scheint es keinen Weg zu geben, dies effizient zu tun. Der einzige Weg, den ich finden kann, besteht darin, den Baum Knoten für Knoten abzufragen:

    read /node/size
    if (node has children)
      for i=0:3
         read /node/i/size

Bei diesem Ansatz werden jedoch zu viele Roundtrips verwendet, und es gibt keine Möglichkeit, festzustellen, ob ein Knoten untergeordnete Elemente enthält, ohne die untergeordneten Elemente tatsächlich vollständig zu laden.

Ich schlage aufrichtig vor, dass das firebase-Entwicklerteam eine Methode implementieren kann, mit der ein Benutzer Felder in den zurückgegebenen Daten filtern kann. Eine neue Abfragemethode wäre die beste.

    var query = rootRef.filter("*/size");
    query.on('value', function(snapshot) {
        // snapshot contains only 'size' fields.
    });

Das Filterargument kann ein regulärer Ausdruck sein, und die Abfrage gibt einen beliebigen Pfad zurück, der dem regulären Ausdruck entspricht. Ich denke, ohne eine solche Abfragemethode ist es wichtig, Firebase zum Speichern hierarchischer Datenstrukturen zu verwenden. Bei den aktuellen Abfragemethoden wird davon ausgegangen, dass die in der Firebase gespeicherten Daten eher flach sind, um effizient zu sein.

Frage:

Wie soll ich die Baumstruktur unter Verwendung der vorhandenen Firebase-Infrastruktur speichern, damit sie effizient abgefragt werden kann? Ich muss in der Lage sein, den Baum nach unten und oben zu durchlaufen und Daten abzurufen, die bestimmten Knoten zugeordnet sind.

Ist die Firebase für diese Art von Datenstruktur geeignet? Welche alternative Strategie ist geeigneter?

Vielen Dank

Antworten auf die Frage(1)

Ihre Antwort auf die Frage