React和Firebase - 基于对象值的查询

时间:2017-04-30 15:25:30

标签: javascript reactjs firebase firebase-realtime-database

我正在尝试根据对象值从Firebase查询数据。我想只得到哪个键匹配mainGoal值的孩子。

数据的结构如下: 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(),
          });
      });
    }
  }
  

编辑:我想在匹配的键下获取对象值   主要目标价值。所以类似于:    const dataGoalRef = dbRef.child('goals/'+this.state.uid).orderByValue().equalTo('mainGoal');

有没有办法这样做?

1 个答案:

答案 0 :(得分: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(),
          });
      });
    }
  }