Проверьте, присутствует ли ребенок или нет, и извлеките простые данные из базы данных - PullRequest
0 голосов
/ 23 июня 2018

enter image description here

Это моя firebase база данных. Здесь, в первом узле, у меня есть ребенок BeenThere , а во втором - нет. Я хочу проверить, существует ли это BeenThere , и если нет, то создать его, и, если существует, как просто получить его, без какой-либо модели или обратных вызовов? Возможно ли это?

1 Ответ

0 голосов
/ 24 июня 2018

Примечание: вы не можете прочитать никакие данные без обратного вызова.

Теперь вы должны понимать разницу между обратными вызовами в firebase, есть 3 (и всеэти 3 считаются считывателями данных):

Добавленный дочерний элемент:

Пуски при добавлении дочернего элемента.(Это не то, что вам нужно).

Значение Прослушиватель событий:

Пуски при добавлении или изменении дочернего элемента.(Это не то, что вам нужно).

Прослушиватель события с одним значением:

Запускается только после его подключения и не запускается снова (Это то, что вам нужно)).

Итак, как вы теперь видите, когда вам нужно просто прочитать данные, вы должны позвонить Listener for single value event.

Пример:

Допустим, вы хотите проверить, существует ли BeenThere под определенным случайным идентификатором, вы должны сделать это:

//this is a method that you call when you need to read the node and do the check.

public void checkBeenThere(String random_id){

DatabaseReference places_ref = FirebaseDatabase.getInstance().getReference().child("Places");

places_ref.child(random_id).addListenerForSingleValueEvent(new ValueEventListener(){

@Override
public void onDataChange(DataSnapshot datasnapshot){

//check if Been there exist
if(datasnapshot.hasChild("BeenThere")){
//been there is found

//get the value of been there (THIS IS THE EDIT***).

 int been_there = datasnapshot.child("BeenThere").getValue(Integer.class); 




}else{
//been there is not found

//add it under the specific random id
places_ref.child(random_id).child("BeenThere").setValue(0);


}


}
@Override
public void onCnacelled(DatabaseError error){

}
});

}

Если вы не уверены в значении random_id, это просто тот идентификатор, который у вас есть в структуре базы данных.(например: ChIJZZ .........), вам нужно передать этот идентификатор, чтобы проверить, были ли там под ним.

Итак, допустим, я хочу проверить, существовал ли он под ChIJZZ.........., я делаю это:

//you must type the whole id, I added .... because it is long.
checkBeenThere("ChIJZZ_sM.......");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...