2017-01-02 6 views
2

페이지로드시 생성 된 스냅 샷을 사용하여 Firebase 데이터베이스에서 항목 배열을 가져 오려고합니다. 배열에 각 객체의 값을 추가했는데 이제 각 객체의 항목을 for 루프가있는 다른 배열로 밀어 넣으려고합니다.Firebase 스냅 샷에서 항목 배열 가져 오기

하지만 두 번째 배열을 만들 때 스냅 샷의 개체보다 많은 항목이 있습니다.

나는이 문제를 어떻게 해결할 수 있는지 궁금합니다. 어떤 도움이라도 굉장합니다. 감사.

코드 :

var ref = firebase.database().ref().child('/scenes/' + projId).orderByChild('wordcount'); 
ref.once('value',function(snap) { 
    snap.forEach(function(item) { 
     var itemVal = item.val(); 
     keys.push(itemVal); 
     for (i=0; i < keys.length; i++) { 
      counts.push(keys[i].wordcount); 
     } 
    }); 
}); 
+0

어디에서'keys'를 만들거나 초기화합니까? –

+0

@FrankvanPuffelen이 코드 덩어리 앞에 키와 빈 배열을 초기화합니다. – SyrupandSass

+0

현재 스 니펫에서 무슨 일이 벌어지고 있는지 말하기는 어렵습니다. jsbin/jsfiddle에서 문제를 재현 할 수 있습니까? –

답변

7

은 다시 온통 열쇠로 루프를 뭔가를 추가 할 때마다. 당신은 아마 당신의 대해 forEach 외부로 이동해야합니다 : 차축 @ 마이크

var ref = firebase.database().ref().child('/scenes/' + projId).orderByChild('wordcount'); 
ref.once('value',function(snap) { 
    snap.forEach(function(item) { 
     var itemVal = item.val(); 
     keys.push(itemVal); 
    }); 
    for (i=0; i < keys.length; i++) { 
     counts.push(keys[i].wordcount); 
    } 
}); 
+0

나는 당신을 지금 사랑해. 오래 전에 비슷한 것을 알아 내려고 노력했습니다. 그래서 간단하게, 왜 이런 생각을 할 수 없었는지 모르겠다. ( – JCisar

+2

어떤 이유로 Firebase 스냅 샷을 반복 할 수 없다. 최근 Firebase의 주요 변경 사항이 있었습니까? 붙여 넣은 코드를 복사했지만 여전히 같은 오류가 발생합니다. '(항목 : DataSnapshot) =>'void '형식의 매개 변수'(a : DataSnapshot) => 부울 '에 할당 할 수 없습니다. 'void '형식을'boolean '형식에 할당 할 수 없습니다. –

0

: 그냥 대해 forEach 내부의 진정한 수익을 추가 할 수 있습니다. 그것은 나를 위해 작동합니다 ...;)

관련 문제