小编典典

测试Firebase中是否存在数据

javascript

我想先测试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”为空。

我该如何解决?


阅读 358

收藏
2020-05-01

共1个答案

小编典典

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

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

但这将下载所有数据usersRef并在客户端上执行检查。通过加载更具针对性的引用,只为您要检查的用户下载数据,效率会更高:

usersRef.child(theDataToAdd).once('value', function(snapshot) {
  if (snapshot.exists()) {
    alert('exists');
  }
});
2020-05-01