Firebase получить узлы с нулевым полем - PullRequest
0 голосов
/ 26 декабря 2018

Я обновил доменные классы моего проекта, и с предыдущими версиями произошли некоторые несовместимости ...

Я избавляюсь от большинства из них, но есть одна ситуация, которая проблематична

Мне нужно найти все узлы Firebase из одной конкретной ветви, указанное поле == null

Позвольте мне объяснить фон: я добавил несколько новых полей в мои классы домена для хранения в Firebase ...все ранее сохраненные данные будут иметь null значения для этих полей, я хочу получить эти узлы ... есть ли простой способ (ПОЖАЛУЙСТА, БЕЗ ПОДСОЕДИНЕНИЯ ВСЕЙ БАЗЫ ДАННЫХ)

вот моя схема:

root
-users
--a
---newField
/*many other irrelevant fields*/ 
--b
---newField
//so on and so on

Я пытаюсь сделать что-то вроде этого:

App.getDatabaseInstance().getReference("users").orderByChild("newField").equalTo(null).addListenerForSingleValueEvent(listener);

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

Есть лилюбой способ достичь моего намерения?

1 Ответ

0 голосов
/ 26 декабря 2018

Вы не можете запросить базу данных для детей, которых не существует.Но вы можете удалить свой оператор equalTo(null), и вы получите результаты, отсортированные по данным, для которых сначала отсутствует дочерний элемент newField.Итерируйте по набору результатов, пока не достигнете записи, которая уже имеет набор newField, это означает, что вы уже обработали все данные, которые не имели ее.

Пожалуйста,см. эту документацию: https://firebase.google.com/docs/database/admin/retrieve-data#ordering-by-a-specified-child-key

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

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