2017-04-30 1 views
1

객체 값을 기준으로 Firebase에서 데이터를 쿼리하려고합니다. 키 일치하는 자식 만 mainGoal 값으로 설정하고 싶습니다. enter image description hereReact와 Firebase - 객체 값을 기반으로 한 쿼리

그리고 이것은 내가 데이터를 조회하려고 방법은 다음과 같습니다 :

데이터과 같이 구성되어

componentDidMount =() => { 
    let mainGoalKey = dbRef.child('goals/'+this.state.uid+'/mainGoal'); 

    mainGoalKey.on('value', snap => { 
     this.setState({ 
      mainGoalKeyState: snap.val(), 
     }); 
    }); 

    if (this.state.mainGoalKeyState) { 
     const dataGoalRef = dbRef.child('goals/'+this.state.uid+'/'+this.state.mainGoalKeyState); 
     dataGoalRef.on('value', snap => { 
      this.setState({ 
      dataGoal: snap.val(), 
      }); 
     }); 
    } 
    } 

편집 : 나는 아래 개체 값을 얻으려면 mainGoal 값과 일치하는 키입니다. 그래서 같은 : const dataGoalRef = dbRef.child('goals/'+this.state.uid).orderByValue().equalTo('mainGoal');

그렇게 할 수있는 방법이 있습니까?

답변

0

orderByChild를 사용하여 원하는 데이터와 일치시킬 수 있습니다.

componentDidMount =() => { 
    let mainGoalKey = dbRef.child('goals').orderByChild(mainGoal).equalTo(this.state.uid); 

    mainGoalKey.on('value', snap => { 
     this.setState({ 
      mainGoalKeyState: snap.val(), 
     }); 
    }); 

    if (this.state.mainGoalKeyState) { 
     const dataGoalRef = dbRef.child('goals/'+this.state.uid+'/'+this.state.mainGoalKeyState); 
     dataGoalRef.on('value', snap => { 
      this.setState({ 
      dataGoal: snap.val(), 
      }); 
     }); 
    } 
    } 
+0

불행히도, 작동하지 않는 것 같습니다. 내가하고 싶은 일은 firebase 데이터베이스를'dbRef.child ('goals /'+ this.state.uid + '/'+ this.state.mainGoalKeyState)'로 참조하는 것입니다. 여기서'mainGoalKeyState'는 첫 번째 값 snap에서 설정됩니다. 나는 여러 스냅 샷을 동시에 수행 할 수 있는지 알지 못합니다. –

관련 문제