Firebase Database Querying: возвращает последний добавленный объект, в котором значение имеет дочерний - PullRequest
0 голосов
/ 17 мая 2018

Я создаю приложение для Android, в котором пользователь может отслеживать свой вес и прогресс, вставляя свой вес (необязательно) И / ИЛИ загружая картинку (необязательно).

{
  "users" : {
    "5aHvYy5wTIVAAgdOEso0wr2woHS2" : {
      "firstName" : "Justin",
      "logs" : [ {
        "date" : "16/05/2018",
        "progressPicture" : "http://www.google.com/example.jpg",
        "weight" : 82.1
      }, {
        "date" : "17/05/2018",
        "progressPicture" : "http://www.google.com/example.jpg"
      }, {
        "date" : "18/05/2018",
        "weight" : 80.3
      } ]
    }
}

Мне удалось получить последний журнал, упорядочив по ключу и ограничив результат до 1, используя следующий код.

firebaseDatabase.getReference(USER_REFERENCE).child(firebaseAuth.currentUser?.uid).child(LOG_REFERENCE).orderByKey().limitToLast(1).

Как видно из моего JSON, журнал не обязательно должен иметь значение веса.

МОЙ ВОПРОС: Как я могу настроить свой запрос так, чтобы я получал свой последний журнал (то есть 1 журнал только на основе ключа), где есть значение для веса?

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Вы можете добавить новую запись с именем weight_log, которая будет обновляться после записи нового веса, вы можете легко сделать это с помощью firebase functions, который будет запускаться при каждом /users/{userId}/weight_log/{iterationID} создании события

Затемвы можете использовать limitToLast(1) по новому пути

Обычно рекомендуется выравнивать структуру данных

0 голосов
/ 17 мая 2018

Прочитав вики, вы можете только отфильтровать данные и проверить, есть ли значение для веса, добавив ValueEventListener(), который вернет список всего списка, в котором вы должны пройти по нему, и вернет вам значение

https://firebase.google.com/docs/database/android/lists-of-data#filtering_data

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