2017-10-26 1 views
0

이것은 내 firebase 가져 오기 기능이며이를 inboxMessages 변수에 저장합니다.Javascript에서의 firebase 결과를 매핑하는 방법 React Native

inboxMessageFetch(mobileNumber) { 
      return firebase.database().ref(`${mobileNumber}/inbox`) 
       .on('value', snapshot => { 
        console.log('FB', snapshot.val()); 
        this.inboxMessages = snapshot.val(); 
       }); 
    } 

다음은 Firebase 서버로부터받은 firebase 결과입니다.

Array [ 
    undefined, 
    Object { 
    "from": "Joseph's", 
    "fromId": 123456, 
    "message": "Hello this is important!", 
    "time": "10:20AM", 
    }, 
    Object { 
    "from": "Anglo", 
    "fromId": 123, 
    "message": "This message is a test message", 
    "time": "10:30PM", 
    }, 
] 

나는 getInboxMessagesinboxMessages 값을 얻기 위해 getter 함수를 사용합니다.

는 나는 다음과 같은 오류를 내려면 ListView

<List> 
      { 
      this.props.inboxStore.getInboxMessages.map((l, i) => (
       <ListItem 
       key={i} 
       leftIcon={{ name: 'user-circle-o', type: 'font-awesome', style: {color: 'blue'} }} 
       title={l.from} 
       titleStyle={{color: 'red'}} 
       subtitle={l.message} 
       rightTitle='11:00am' 
       rightTitleStyle={{color: 'green'}} 
       /> 
      )) 
      } 
     </List> 

에 결과를 보여주고 싶어요. enter image description here

+0

배열의 첫 번째 요소가 정의되지 않은 것처럼 보입니다. 배열 [ undefined, ...'따라서 아무 데이터도 얻을 수 없습니다. 루프가이 배열을 통과하고 데이터를 표시하려고합니다. 그러나 첫 번째 배열 요소에 데이터가 없습니다 – Loki

+0

매핑 기능을 리팩터링 할 수 있습니까? –

답변

2

변경에서 데이터베이스 데이터의 처리 :

this.inboxMessages = snapshot.val(); 

하려면 :

this.inboxMessages = snapshot.val().filter(v => v); 

undefined 같은 어떤 falsy 값을 제거하고 당신은 오류의 종류를받지 않습니다.

관련 문제