Chi*_*ria 27 javascript firebase firebase-realtime-database
我正在尝试创建一个简单的程序,从用户获取名称,手机号码和电子邮件地址,然后将数据放在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>
Run Code Online (Sandbox Code Playgroud)
我已经像这样设置了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>
Run Code Online (Sandbox Code Playgroud)
这是我的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);
}
Run Code Online (Sandbox Code Playgroud)
这就是我将数据放到数据库中的方法.
所以newClientKey生成一些字符串,插入时效果很好但现在如何检索?该官方文档是没有帮助的.这个生成的字符串可能基于时间戳,如果是这种情况,则再次生成它是不可能的.
检索如何在插入时才能访问的唯一生成的字符串下,如何访问电子邮件,移动设备和名称?
按照上面的结构,我需要降低2级才能访问所需的数据,由于缺少文档,我不知道该怎么做,我不确定这样的东西是否会起作用:
database.child().child();
Run Code Online (Sandbox Code Playgroud)
Chi*_*ria 42
这个问题的答案深埋在Firebase 数据库参考中.
forEach()用于在不知道孩子确切路径的情况下到达孩子.
var leadsRef = database.ref('leads');
leadsRef.on('value', function(snapshot) {
snapshot.forEach(function(childSnapshot) {
var childData = childSnapshot.val();
});
});
Run Code Online (Sandbox Code Playgroud)
现在childSnapshot将包含所需的数据,同样的东西也可以使用child_added.
leadsRef.on('child_added', function(snapshot) {
//Do something with the data
});
Run Code Online (Sandbox Code Playgroud)
唯一的区别是,如果是forEach(),它将从一开始就循环,所以如果要添加任何新数据,它还会加载以前的数据,但是如果是child_added,则监听器只对新孩子而不是之前存在的孩子.
您还可以使用点表示法来获取您正在寻找的孩子的价值。
下面我只是从评分最高的答案中注释掉了 forEach 循环,并添加了一个 console.log()。
var leadsRef = database.ref('leads');
leadsRef.on('value', function(snapshot) {
// snapshot.forEach(function(childSnapshot) {
var childData = snapshot.node_.children_.root_.value.value_;
console.log("snapshot.node_.children_.root_.value.value_: ", snapshot.node_.children_.root_.value.value_)
// });
});
Run Code Online (Sandbox Code Playgroud)
在发布此内容时,我使用的是 firebase 5.9.1
src="https://www.gstatic.com/firebasejs/5.9.1/firebase.js"
| 归档时间: |
|
| 查看次数: |
58320 次 |
| 最近记录: |