Запрос иерархической структуры данных в Firebase

У меня есть приложение, которое хранит данные в древовидной структуре, которую я хотел бы сохранить в Firebase.

Каждый узел в дереве выглядит так:

    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

Так что, в основном, это четырехугольное дерево. Проблема в том, что если я загружу корневой узел дерева, он будет огромным, потому что firebase создаст снимок, который включает в себя все дерево. Было бы хорошо, если бы я мог сначала прочитать древовидную структуру, но без поля «данные», а затем я мог бы выборочно загрузить поле «данные» в некоторых узлах.

В настоящее время, кажется, нет способа сделать это эффективно. Единственный способ, которым я могу придумать, это запросить узел дерева за узлом:

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

Тем не менее, этот подход будет использовать слишком много циклов, и нет никакого способа определить, есть ли у узла дочерние элементы, фактически не загружая дочерние элементы полностью (это можно сделать, если я добавлю поле 'hasChild' в узлы, но это кажется избыточным).

Я искренне предполагаю, что команда разработчиков Firebase может реализовать метод, позволяющий пользователю фильтровать поля в данных, которые возвращаются. Новый метод запроса будет лучшим.

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

Аргумент фильтра может быть регулярным выражением, и запрос будет возвращать любой путь, соответствующий регулярному выражению. Я думаю, что без такого метода запроса важно использовать Firebase для хранения иерархической структуры данных. Все методы текущего запроса предполагают, что данные, хранящиеся в firebase, довольно «плоские», чтобы быть эффективными.

Вопрос:

Как мне сохранить древовидную структуру, используя существующую инфраструктуру Firebase, чтобы ее можно было эффективно запрашивать? Мне нужна способность ходить по дереву вниз и вверх и извлекать данные, связанные с конкретными узлами.

Подходит ли firebase для такой структуры данных? Какая альтернативная стратегия больше подходит?

Спасибо

Ответы на вопрос(1)

Ваш ответ на вопрос