Проверьте, существуют ли данные в 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" пусто.
Как я могу это исправить?
Ответы
Ответ 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) {
}
});