Как получать все данные за каждый месяц из Firebase для расчета в Android - PullRequest
0 голосов
/ 01 мая 2020

Есть несколько дат и данных для каждой даты. Каждую дату и данные хранят под уникальным ключом.

"Data":{
   "K2ngvpioRUYF4bRM07Da5cbAjE53":{
      "-M3jNjCuGdMCwt1Czpwz":{
         "Date":"2020-3-30",
         "Scale":"3"
      },
      "-M3jQWxm7z0EQYgkVenX":{
         "Date":"2020-4-29",
         "Scale":"4"
      },
      "-M5hxn-rCJICUvRcMZJu":{
         "Date":"2020-4-24",
         "Scale":"2"
      }
   }
}

Я хотел бы рассчитать общее количество шкал за месяц (главное - ежемесячно). Вместо использования "startAt" и "endAt":

   Query query = ref.orderByChild("Date").startAt("2020-3-1").endAt("2020-3-31");
   Query query2 = ref.orderByChild("Date").startAt("2020-4-1").endAt("2020-4-30");

Есть ли лучший способ для l oop для всех месяцев и годов? Я думаю, что приведенный выше код сложен, если у меня есть даты разных лет и месяцев.

1 Ответ

0 голосов
/ 01 мая 2020

Если ваш ref объект указывает на базу данных root, то ваша ссылка неверна, поскольку вы пропускаете Data и идентификатор пользователя из него. Видите Data и K2ngvpioRUYF4bRM07Da5cbAjE53 в вашем дереве? Оба ребенка должны быть добавлены к вашему запросу. Кроме того, вы используете для свойства Date значения String, что на самом деле также неверно. Вы должны использовать метку времени, как объяснено в моем ответе из следующего поста:

При этом правильный запрос должен выглядеть следующим образом:

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference ref = FirebaseDatabase.getInstance().getReference();
Query query = ref.child("Data").child(uid) //Added both children
    .orderByChild("Date")
    .startAt(startLongValue)
    .endAt(endLongValue);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...