首页 文章

如何从Firebase数据库中检索数据?

提问于
浏览
14

我正在尝试创建一个简单的程序,从用户获取名称,手机号码和电子邮件地址,然后将数据放在Firebase实时数据库上 .

有3个输入框和一个点击按钮进行上述操作的按钮 . 这是代码:

<input type="text" id="name">
<input type="text" id="mobile">
<input type="text" id="email">

<button type="button" id="button" onclick="addLead()">Submit</button>

我已经像这样设置了Firebase:

<script src="https://www.gstatic.com/firebasejs/3.2.0/firebase.js"></script>
<script>
  // Initialize Firebase
  var config = {
    ...
  };
  firebase.initializeApp(config);

  var database = firebase.database();
</script>

这是我的 addLead() 功能:

function addLead() {
    var clientName = document.getElementById('name').value;
    var clientMobile = document.getElementById('mobile').value;
    var clientEmail = document.getElementById('email').value;

    var newClientKey = database.ref().child('leads').push().key;
    database.ref('leads/'+newClientKey+'/name').set(clientName);
    database.ref('leads/'+newClientKey+'/mobile').set(clientMobile);
    database.ref('leads/'+newClientKey+'/email').set(clientEmail);
}

这就是我将数据放到数据库中的方法 .

enter image description here

所以 newClientKey 正在生成一些字符串,它在插入时效果很好但现在如何检索? official documentation没有任何帮助 . 这个生成的字符串可能基于时间戳,如果是这种情况,则再次生成它是不可能的 .

检索如何在插入时才能访问的唯一生成的字符串下,如何访问电子邮件,移动设备和名称?

按照上面的结构,我需要降低2级才能访问所需的数据,由于缺少文档,我不知道该怎么做,我不确定这样的东西是否会起作用:

database.child().child();

1 回答

  • 27

    这个问题的答案深埋在Firebase Database Reference中 . forEach() 用于在不知道孩子确切路径的情况下找到孩子 .

    var leadsRef = database.ref('leads');
    leadsRef.on('value', function(snapshot) {
        snapshot.forEach(function(childSnapshot) {
          var childData = childSnapshot.val();
        });
    });
    

    现在 childSnapshot 将包含所需的数据,同样的东西也可以使用 child_added 来访问 .

    leadsRef.on('child_added', function(snapshot) {
          //Do something with the data
    });
    

    唯一的区别是,在 forEach() 的情况下,它将从头开始循环,所以如果要添加任何新数据,它也会加载以前的数据但是在 child_added 的情况下,监听器只在新孩子而不是之前现有的孩子 .

相关问题