Google firebase проверяет, существует ли ребенок

Я пытаюсь создать приложение на Android. Мне нужно проверить, имеет ли данный элемент моей базы данных в firebase дочерний элемент с заданным именем. Я надеялся, что это можно сделать, используя что-то вроде:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference(); if (rootRef.childExists("name")) { //run some code } 

Я искал, но я не нашел ничего полезного. Спасибо за любую помощь заранее.

Solutions Collecting From Web of "Google firebase проверяет, существует ли ребенок"

Редактировать 2; Стоит упомянуть : я думаю, стоит упомянуть, что на самом деле это загрузка всех данных в этот моментальный снимок, чтобы проверить, существуют ли какие-либо данные. Вы должны помнить здесь. Если ссылка огромна (например, на самом деле корневая ссылка, а не конкретный дочерний элемент / свойство), то вы должны либо найти более глубокий узел, который вы можете использовать для проверки существования, либо дизайн вашей структуры данных по-разному, поэтому эффективная проверка возможна.

Ссылка на базу данных фактически является URL-адресом для этих данных. Вы хотите получить данные, чтобы узнать, существует ли ребенок. Вот почему метод, который вы, похоже, ищете, – это DataSnapshot .

 DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference(); rootRef.addListenerForSingleValueEvent(new ValueEventListener() { @Override void onDataChange(DataSnapshot snapshot) { if (snapshot.hasChild("name")) { // run some code } } }); 

Теперь этот дизайн выглядит немного странным. Вы читаете всю базу данных, чтобы узнать, существует ли «имя». Вы можете сделать это немного более эффективным, слушая rootRef.child("name") а затем просто проверяя, является ли snapshot.exists() .

Если вы пытаетесь сделать валидацию здесь, а не управляете потоком, вы должны рассмотреть возможность размещения этого кода в своих rules.json .

Edit : Я изначально использовал неправильное имя функции (childExists вместо hasChild)

Попробуйте использовать .childexists в сочетании с .equalTo("Your specific name")