Запрос хранилища Firebase, если файл изображения существует - PullRequest
0 голосов
/ 12 сентября 2018

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

  1. С "age": 12 и
  2. Храните файл profile.jpg в хранилище в каталоге, названном в честь их userId.

Моя структура базы данных:

{
  "Users" : {
    "uid1" : {
      "name" : "Josh",
      "age": 12
    },
    "uid2" : {
      "name" : "June",
      "age": 13
    }
  }
}

И моя структура хранения выглядит так:

example.appspot.com > uploads > uid1 > profile.jpg

Мне удалось решить первый раздел, который сортирует пользователей в возрасте 12 лет, со следующим:

Query query = FirebaseDatabase.getInstance().getReference().child("Users").orderByChild("age").equalTo(12);

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

1 Ответ

0 голосов
/ 12 сентября 2018

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

 {
  "Users" : {
    "uid1" : {
      "name" : "Josh",
      "age": 12,
      "hasPhoto": true
    },
    "uid2" : {
      "name" : "June",
      "age": 13,
      "hasPhoto": false
    }
  }
}

Тогда, я думаю, что база данных Firebase Realtime не позволяет сортировать более чем по одному полю, поэтому вместо этого вы можете сделать это:

Сортировка по одному полю («возраст»), получение результата, а затем сортировка / фильтрация по этим пользовательским объектам на стороне клиента в зависимости от того, имеют они jpg или нет. В качестве альтернативы, Firestore позволяет запрашивать более одного поля.

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