0

파이어베이스 스냅 샷을 내 이온 애플리케이션의 어레이로 변환하기 위해이 튜토리얼 https://ilikekillnerds.com/2017/05/convert-firebase-database-snapshotcollection-array-javascript/을 따라 왔습니다. 이것은 내가 가진 코드 :파이어베이스 데이터베이스 스냅 샷을 타입 스크립트의 배열로 변환시 오류

https://github.com/dladinot/AplicativoTutoriasMoviles/blob/master/src/pages/buscar-tutor/buscar-tutor.ts

그리고 이것은 중포 기지 내 데이터 구조입니다 :

을 : 내 코드를 사용하는 경우

enter image description here

이 오류가 나에게 준다

enter image description here

오류가있는 부분의 코드 줄을 debbug하면 스냅 샷의 첫 번째 항목이 배열에 저장되어있는 것을 볼 수 있습니다. 다음 값은 정의되지 않습니다.

enter image description here

누구나 무슨 일이 일어나고 있는지 어떤 생각을 가지고 : 난 그냥 잘 인쇄 열쇠를 인쇄하는 경우 있지만?

+0

를 사용하여 어레이에 스냅 샷을 추가 데이터베이스에는'boolLogin'과'disponible'과 같은 몇 가지'boolean' 속성이 있습니다. 따라서 foreach를 사용하여 값을 반복하고 키를 추가하면이 행에 부울 값이있을 때에도 'item'에 키를 추가하려고하기 때문에이 오류가 발생합니다. 'item.key = childSnapshot.key; 부울 필드에 대해 ' – Niladri

+0

'을 사용하려면 다른 방식으로 처리해야합니다. – Niladri

+0

하지만 부울 필드를 삭제하고 문자열 만 남겨도 같은 문제가 발생합니다. 부울 필드가없는 질문을 출력합니다. –

답변

1

당신은 boolLogin 따라서 disponible. 당신이 값을 반복하고이 경우에도 항목에 키를 추가하려고하기 때문에이 오류가 점점 그들에게 키를 추가 foreach 문을 사용하고 같은 데이터베이스에 여러 boolean 특성을 가지고 이 줄 boolean

item.key=childSnapshot.key;

시도는 다음 코드

this.consultaTutor=this.afDatabase.object(`profile/SlHGkc3ZK0hHxH2s1sowpgGuJfA3`, {preserveSnapshot: true}) 
      this.consultaTutor.subscribe(info=>{ 
      info.forEach(childSnapshot=>{ 
       var value = childSnapshot.val(); 
       var key = childSnapshot.key; 
       console.log(childSnapshot.key); 
       var item = { "key" : key, "value" : value}; 
       this.listaTutores.push(item);  
      }) 
+0

감사합니다. 완벽하게 작동합니다. –