2016-07-23 31 views
10

Tôi đang cố gắng tạo một chương trình đơn giản có tên, số điện thoại di động và địa chỉ email từ người dùng và sau đó đặt dữ liệu trên Cơ sở dữ liệu thời gian thực Firebase.Làm cách nào để truy xuất dữ liệu từ Cơ sở dữ liệu Firebase?

Có 3 ô nhập liệu và một nút bấm khi thực hiện thao tác trên. Đây là mã:

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

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

tôi đã thiết lập căn cứ hỏa lực như thế này:

<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> 

Và đây là addLead() chức năng của tôi:

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

Đây là cách tôi đặt dữ liệu vào cơ sở dữ liệu hoạt động.

enter image description here

Vì vậy, các newClientKey đang tạo một số chuỗi, nó hoạt động tốt khi chèn nhưng bây giờ làm thế nào để lấy lại? official documentation không giúp được gì. Chuỗi được tạo này có thể dựa trên dấu thời gian, nếu đó là trường hợp sau đó tạo ra nó một lần nữa sẽ là không thể.

Khi truy xuất cách truy cập email, điện thoại di động và tên theo chuỗi được tạo duy nhất chỉ có sẵn tại thời điểm chèn?

Đi theo cấu trúc bên trên, tôi cần giảm 2 cấp để truy cập dữ liệu bắt buộc và vì thiếu tài liệu, tôi không biết cách thực hiện, tôi không chắc liệu điều này có công việc:

database.child().child(); 
+0

những gì hiện 'database.ref(). Con ('dẫn') một lần ('giá trị'). Sau đó (hàm (chì) { console.log (lead.val(). Email, lead.val () .mobile, lead.val(). name); }); 'sản xuất trong bảng điều khiển? – Deryck

+1

@Deryck nó tạo ra 'không xác định'. –

Trả lời

22

Câu trả lời cho câu hỏi này được chôn sâu trong Firebase Database Reference. forEach() được sử dụng để tiếp cận trẻ mà không biết đường dẫn chính xác của trẻ.

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

Bây giờ childSnapshot sẽ chứa các dữ liệu cần thiết, điều tương tự cũng có thể được truy cập bằng child_added.

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

Sự khác biệt duy nhất là trong trường hợp forEach(), nó sẽ lặp qua từ khi bắt đầu vì vậy nếu bất kỳ dữ liệu mới sẽ được thêm vào, nó cũng sẽ được tải dữ liệu trước đó nhưng trong trường hợp của child_added, người nghe chỉ là về đứa trẻ mới và không phải là những đứa trẻ hiện có trước đó.

+0

Rất hữu ích. Cảm ơn bạn. – Gaetano

+1

Tôi thực sự muốn điều này là trong các tài liệu chuẩn. Chôn sâu thực sự! – brandonscript

Các vấn đề liên quan