Firebase на андроиде как вернуть только узел без детей - PullRequest
0 голосов
/ 16 ноября 2018

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

Я наблюдал за консолью Firebase, где мы можем управлять базой данных иЯ заметил, что он показывает нам только узлы на каждом уровне.Чтобы увидеть детей, мы должны нажать на кнопку + (рядом с именем узла) или на самом узле.

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

Мой вопрос касается следующей базы данных:

{  
   "root":{  
      "node1":{  
         "childA":"a",
         "childB":"b",
         "childC":"c"
      },
      "node2":{  
         "childA":"2a",
         "childB":"2b",
         "childC":"2c"
      },
      "node3":{  
         "childA":"3a",
         "childB":"3b",
         "childC":"3c"
      },
      "node4":{  
         "childA":"4a",
         "childB":"4b",
         "childC":"4c"
      },
      "lululu":{  
         "childA":"1a",
         "childB":"2b",
         "childC":"3c"
      },
      "node1214":{  
         "childA":"1a",
         "childB":"1b",
         "childC":"1c"
      },
      "node10":{  
         "childA":"a",
         "childB":"b",
         "childC":"c"
      }
   }
}

КакМогу ли я получить список узлов в root без их содержимого (в виде списка, например, ["node1", "node2", "node3"...] или как правильный Map, но без дочерних данных (чтобы уменьшить использование полосы пропускания)?

Ответы [ 2 ]

0 голосов
/ 17 ноября 2018

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

{  
   "root": {  
       "node1":"1",
       "node2":"2",
       "node3":"3"
   },

    "nodes" : {  
       "1": {  
           "childA":"a",
           "childB":"b",
           "childC":"c"
       },
       "2":{  
           "childA":"2a",
           "childB":"2b",
           "childC":"2c"
       },
       "3":{  
           "childA":"3a",
           "childB":"3b",
           "childC":"3c"
       }
    }
}

Когда вы получаете предмет, вы также получаете детей под ним.Поэтому избегайте вложения ваших данных.Вы можете также проверить ответ здесь .

0 голосов
/ 17 ноября 2018

Это невозможно с любым из мобильных SDK. Это возможно только при использовании REST API с использованием параметра shallow .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...