testingFirebase中是否存在数据

我想先testing一下数据是否存在于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”时才被调用,但是我不明白怎么做。

我也尝试与“价值”事件,但我的“message.name”是空的。

我该如何解决?

您可以使用DataSnapshot.hasChild来确定某个孩子是否存在。

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

这是一个快速jsfiddle显示如何工作: http : //jsfiddle.net/PZ567/

我使用下面的代码:

 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'); } }); 

因为客户端不会获取所有的用户数据,这可能是巨大的。

检查数据是否存在于Firebase Db for 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) { } });