【问题标题】:React and Firebase - Query based on object valueReact 和 Firebase - 基于对象值的查询
【发布时间】:2017-04-30 15:25:30
【问题描述】:

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

数据的结构如下:

这就是我尝试查询数据的方式:

  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');

有什么办法吗?

【问题讨论】:

    标签: javascript reactjs firebase firebase-realtime-database


    【解决方案1】:

    您可以使用 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(),
              });
          });
        }
      }
    

    【讨论】:

    • 不幸的是,这似乎不起作用。我想要做的是将firebase数据库引用为dbRef.child('goals/'+this.state.uid+'/'+this.state.mainGoalKeyState),其中mainGoalKeyState是从第一个值快照设置的。我也不知道我是否可以同时做多个快照。
    猜你喜欢
    • 1970-01-01
    • 2017-05-15
    • 1970-01-01
    • 1970-01-01
    • 2021-10-28
    • 1970-01-01
    • 2019-04-30
    • 2014-03-03
    • 1970-01-01
    相关资源
    最近更新 更多