Подтвердить что ты не робот

Проверьте, существуют ли данные в Firebase

Я бы хотел проверить, существуют ли данные в Firebase, прежде чем добавлять их. Но у меня проблема с моим методом: я пытаюсь перечислить все данные с помощью этого кода Javascript:

var theDataToAdd = userName;
var usersRef = new Firebase('https://SampleChat.firebaseIO-demo.com/users/');
usersRef.on('child_added', function(snapshot) {
   var message = snapshot.val();
   if (message.name == theDataToAdd)
      alert ("exist");
});

Но если пользователь не существует, он будет добавлен раньше, тогда мой код говорит, что он существует. Вы скажете, что это нормально, потому что мое предупреждение вызывается только тогда, когда "child_added", но я не вижу, как это сделать.

Я также пытаюсь выполнить событие "value", но мое "message.name" пусто.

Как я могу это исправить?

4b9b3361

Ответ 1

Вы можете использовать DataSnapshot.hasChild, чтобы определить, существует ли определенный ребенок.

usersRef.once('value', function(snapshot) {
  if (snapshot.hasChild(theDataToAdd)) {
    alert('exists');
  }
});

Вот быстрый пример, показывающий, как это работает: http://jsfiddle.net/PZ567/

Ответ 2

Я использую следующий код:

var theDataToAdd = userName;
var ref = new Firebase('https://SampleChat.firebaseIO-demo.com/users/' + theDataToAdd);
ref.on('value', function(snapshot) {
   if (snapshot.exists())
      alert ("exist");
   else
      alert ("not exist");
});

Мой метод более легкий, чем это:

usersRef.once('value', function(snapshot) {
  if (snapshot.hasChild(theDataToAdd)) {
    alert('exists');
  }
});

потому что клиент не будет извлекать все данные пользователей, которые могут быть огромными.

Ответ 3

Способ проверки наличия данных или нет в Firebase Db для ANDROID.

 final Firebase firebaseRef = new Firebase(<Your_Firebase_URL>/Users).child(username);


firebaseRef.addListenerForSingleValueEvent(new ValueEventListener) {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
    if (dataSnapshot.exists()) {
        // User Exists
    }
}

@Override
public void onCancelled(FirebaseError firebaseError) {

}
});