代码之家  ›  专栏  ›  技术社区  ›  StackUnderFlow

如何在react中查询firebase数据库?

  •  0
  • StackUnderFlow  · 技术社区  · 6 年前

    我在firebase中有以下数据结构作为实时数据库:

    {
      "react" : {
        "url_01" : "https://stackoverflow.com/",
        "url_02" : "https://google.com/",
        "url_03" : "https://www.youtube.com/"
      }
    }
    

    我正试图查询数据库以显示下面组件中的所有url。

    到目前为止,我已经让它正确地显示了数据库中的第一个URL,但现在尝试将它们全部显示在div中 <h1> 是的。

    class FirebaseDB extends React.Component {
      constructor() {
        super();
        this.state = {
          speed: [],
        };
      }
    
      componentDidMount() {
        const rootRef = firebase.database().ref().child('react');
        const speedRef = rootRef.child('url_01');
        speedRef.on('value', snap => {
          this.setState({
            speed: snap.val()
          });
        });
      }
    
      render() {
        return (
    
            <div>
              <h1>URL: {this.state.speed}</h1>
            </div>
    
    
        );
      }
    }
    
    2 回复  |  直到 6 年前
        1
  •  7
  •   MrcRjs    6 年前
    componentDidMount() {
        const rootRef = firebase.database().ref();
        const speedRef = rootRef.child('react');
    
        speedRef.once("value", snap => {
            // Handle state
            let speedsUrls = []
            snap.forEach(child => {
                speedsUrls.push(child.val())
            });
            this.setState({speed: speedsUrls})
        });
    }
    
    render() {
        const SpeedURLS = this.state.speed.map(url => <h1>URL: {url}</h1>);
        return (
            <div>
                {SpeedURLS}
            </div>
        );
    }
    
        2
  •  0
  •   Spring Page    6 年前

    另一个解决方案:

    const object1 = {
        "url_01" : "https://stackoverflow.com/",
        "url_02" : "https://google.com/",
        "url_03" : "https://www.youtube.com/"
    };
    
    let a = Object.values(object1);
    

    A现在是

    ["https://stackoverflow.com/","https://google.com/","https://www.youtube.com/"]