2017-04-30 13 views
1

オブジェクト値に基づいてFirebaseからデータを照会しようとしています。私はキーがmainGoal値に一致する子のみを取得したいです。ReactとFirebase - オブジェクト値に基づくクエリ

データがそうのように構成されています enter image description here

そして、これは私がデータを照会しようとしている方法です:

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

残念ながら、それはうまくいかないようです。私がしたいのは 'dbRef.child( 'goals /' + this.state.uid + '/' + this.state.mainGoalKeyState)'というfirebaseデータベースへの参照です。ここで 'mainGoalKeyState'は最初の値snapから設定されています。私は複数のスナップショットを同時に実行できるかどうかはわかりません。 –

関連する問題