2017-01-26 4 views
0

이것은 매우 간단한 질문 일 수도 있지만 그것을 만들 수 없습니다. 나는 firebase와 javascript에 익숙하지 않기 때문에 많은 검색을 했었습니다. 이것은 내 firebase 데이터베이스의 구조입니다.firebase의 주어진 경로에있는 모든 노드를 얻는 방법

{ "messages" : { 
"AGA Clinical Trials" : { 
    "test" : { 
    "-KbQDSG-3AXKjk1erhWO" : { 
     "senderName" : "[email protected]", 
    } 
    }, 
    "test-1" : { 
    "-KbQECK7edEok0treaLCI" : { 
     "senderName" : "[email protected]", 
    } 
    } 
} 

}

는 내가 원하는 테스트, 테스트 1 AGA 임상 시험의 모든 노드의 목록입니다. 이 쿼리를 firebase로 사용하고 있습니다.

var siteListref = firebase.database().ref('messages').child('AGA Clinical Trials') 

    siteListref.orderByKey().on('value', function(snapshot){ 

     var userName = snapshot.val(); 
     console.log('user name', userName); 
    } 
+1

당신은 당신의 질문에 JSON 트리의 사진을 포함 시켰습니다. 실제 JSON을 텍스트로 바꾸십시오. [Firebase 데이터베이스 콘솔] (https://console.firebase.google.com/project/_/database/data/)에서 JSON 내보내기 링크를 클릭하면 쉽게 얻을 수 있습니다. . JSON을 텍스트로 사용하면 검색이 가능해 지므로 실제 데이터로 테스트하고이를 사용하여 쉽게 답변 할 수 있습니다. 일반적으로 할 일은 단지 좋은 일입니다. –

답변

0

위치에서 값 이벤트를 수신하면 그 위치에 값이있는 스냅 샷이 생성됩니다. 따라서 스냅 샷에는 AGA Clinical Trials 아래의 모든 하위 노드가 포함됩니다.

당신은 아마 당신이해야 의미, 각각의 자식 노드 찾고있는 결과 스냅 샷 돌이 :

forEach() 반복자의 정확한 코드는 각 자식 노드에서 데이터 구조에 따라
var siteListref = firebase.database().ref('messages').child('AGA Clinical Trials') 

siteListref.on('value', function(snapshot){ 
    snapshot.forEach(function(trialSnapshot) { 
     var userName = trialSnapshot.val(); 
     console.log('user name', userName); 
    }); 
} 

하는 당신은 포함하지 않았습니다.

Firebase에서 자식 노드를 다루는 관용적 인 방법은 하위 이벤트에 가입하는 것입니다. child_added을 듣고에 의해 예를 들어, forEach() 루프 제거 할 수 :

siteListref.on('child_added', function(snapshot){ 
    var userName = snapshot.val(); 
    console.log('user name', userName); 
} 
+0

값을 얻을 수 있는데, 문제는 노드 이름 (test, test1)을 원한다는 것입니다. 나의 유스 케이스는 AGA 임상 시험 사용자 목록을 보여주는 것이다. 내 초보자 스킬이 자바 스크립트에서 제대로 작동하지 않을 수도 있습니다. –

+0

노드의 이름을 원하면'console.log (snapshot.key)'를 사용하십시오. –

관련 문제