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>
파이어베이스를 다음과 같이 설정했습니다.
<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);
}
이것이 제가 작동하는 데이터베이스에 데이터를 저장하는 방법입니다.
그래서 그newClientKey
문자열을 생성하는 것입니다. 삽입할 때 잘 작동하지만 이제 어떻게 검색합니까?공식 문서는 도움이 되지 않습니다.이 생성된 문자열은 타임스탬프를 기반으로 할 수 있으며, 이 경우 다시 생성할 수 없습니다.
삽입할 때만 사용할 수 있었던 고유하게 생성된 문자열 아래에서 이메일, 모바일 및 이름에 액세스하려면 어떻게 해야 합니까?
위의 구조를 살펴보면, 필요한 데이터에 액세스하려면 2단계를 낮춰야 합니다. 문서가 부족하기 때문에 이 작업을 수행하는 방법을 잘 모르겠습니다. 이러한 작업이 가능할지 확신할 수 없습니다.
database.child().child();
이 질문에 대한 대답은 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
수신기는 이전의 기존 하위 항목이 아닌 새 하위 항목에만 있습니다.
또한 점 표기법을 사용하여 찾고 있는 아이의 값을 얻을 수도 있습니다.
아래에서 저는 최고 등급의 답변에서 각 루프에 대해 의견을 제시하고 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_)
// });
});
이 글을 올릴 당시 저는 파이어베이스 5.9.1을 사용하고 있었습니다.
src="https://www.gstatic.com/firebasejs/5.9.1/firebase.js "
var reference = db.ref('/test/');
reference.on('value', function(snapshot) {
snapshot.forEach(function(userSnapshot){
console.log(userSnapshot.val().url)
document.getElementById('gmap').href = userSnapshot.val().location;
document.getElementById('gimg2').src = userSnapshot.val().url;
document.getElementById('name').innerHTML = userSnapshot.val().uid;
저도 같은 문제에 직면해 있었습니다.저는 파이어베이스 실시간 데이터베이스의 데이터를 읽고 웹에 출력하고 싶었습니다.제가 읽고 있는 데이터는 테스트 문서에 있습니다.사용on()
스냅샷을 생성할 수 있습니다.Firebase는 테스트 문서의 데이터에 반복할 수 있는 각 루프를 제공합니다.변수userSnapshot
루프하는 동안 값을 읽습니다. 위치, 변수위치,,url
,uid
는 테스트 문서의 키입니다.
document.getElementById('gmap').href
document.getElementById('gimg2').src
document.getElementById('name').innerHTML
웹에서 데이터를 인쇄하는 DOM 요소입니다.
<a id="gmap" class="btn btn-success btn-sm float-right" type="button"
role="button">See location </a>
<p id="name"></p>
<img id="gimg2" class="img-fluid"/>
이것이 누군가에게 도움이 되길 바랍니다.
포스트 키 또는 클라이언트 키에서 데이터를 검색하려면 다음과 같은 별도의 사용자 이름을 사용하는 것이 좋습니다.
("leads/"+ mobile + "name")
("leads/"+ mobile + "email")
언급URL : https://stackoverflow.com/questions/38541098/how-to-retrieve-data-from-firebase-database
'programing' 카테고리의 다른 글
gitdiff를 사용하여 두 스프레드시트에서 읽을 수 있는 diff를 만들려면 어떻게 해야 합니까? (0) | 2023.07.14 |
---|---|
sig_atomic_t는 실제로 어떻게 작동합니까? (0) | 2023.07.14 |
Xcode에 개발팀이 표시되지 않습니다. (0) | 2023.07.14 |
sscanf가 있는 공백이 있는 문자열 읽기 (0) | 2023.07.14 |
MongoDB 중첩 배열 쿼리 (0) | 2023.07.14 |