Что является альтернативой ключевому слову IN в Firebase? - PullRequest
1 голос
/ 23 апреля 2019

У меня есть свои узлы в Firebase как:

users---
       |
      uid---
           |
           phone:
           name:

Я ищу здесь реализацию IN.Я хочу проверить, какие записи из списка телефонных номеров присутствуют в моей базе данных, а затем извлечь эти записи.

В базах данных SQL эквивалентный запрос может быть:

select phone from users where phone IN ('phone1','phone2','phone3',...)

Как мне добиться этого в моем проекте Android Firebase?

Ответы [ 3 ]

3 голосов
/ 23 апреля 2019

Невозможно скопировать следующий запрос SQL:

select phone from users where phone IN ('phone1','phone2','phone3',...)

в запрос к базе данных Firebase в реальном времени. Вместо этого вы можете запросить базу данных для каждого телефонного номера отдельно и собрать результаты на стороне клиента.

Если в какой-то момент вы попытаетесь использовать Cloud Firestore , вы можете вызвать get () метод для каждого Query объекта, и вы увидите, что он вернет объект Task , который будет разрешен, когда документ будет готов. После этого просто соберите все задачи в Список задач и передайте этот список методу Tasks whenAllComplete () , чтобы ответить, когда полный набор задач завершен. Затем вы можете проверить результаты всех заданий и выполнить соответствующие действия.

1 голос
/ 23 апреля 2019

В Firestore вы можете сделать предложение where, вам не нужно указывать отдельные записи:

var citiesRef = db.collection("cities");
var query = citiesRef.where("phone", "==", "phone1")

См:

Простые и сложные запросы

1 голос
/ 23 апреля 2019

Как говорит Алекс, вы не можете запрашивать список телефонов, вместо этого вы можете просто запросить один с помощью equalsTo()

См. Запрос данных

https://firebase.google.com/docs/database/admin/retrieve-data

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