【问题标题】:Can't get data from firebase无法从 Firebase 获取数据
【发布时间】:2020-08-16 16:15:22
【问题描述】:

我无法从 firebase 获取数据。 Firebase.js 用于 firebase 的初始化,在 App.js 中我试图获取并使用它。 现在,当我尝试获取数据并将其显示在浏览器中时,我看到的只是空白页。看来我没有得到任何数据。 由于某些原因,我什至无法从 stockRef.on('value', (dataSnapshot) 中获得 console.log 请帮我解决它。

App.js

class StocksList extends Component {
    constructor(props){
        super(props);
        this.state = {
            stocks: []
        }
    }

    componentDidMount() {
        const stocksRef = firebase.database().ref('list');
        console.log('popopok', stocksRef)
        stocksRef.on('value', (dataSnapshot) => {
            let list = dataSnapshot.val();
            this.setState({
                stocks: Object.values(list)
            })
        })
    }

    render() {
        return (
            <div>
                {this.state.stocks.map((item) => {
                    return (
                        <div>
                            <p>ISIN: {item.isin}</p>
                            <p>issuer: {item.issuer}</p>
                            <p>issuerCode: {item.issuerCode}</p>
                            <p>ISIN: {item.isin}</p>
                            <p>nominal: {item.nominal} {item.currency}</p>
                            <p>form: {item.form}</p>
                            <p>vyd: {item.vyd}</p>
                        </div>
                    )
                })}
            </div>

        )
    }
}

export default StocksList;

firebase.js

import firebase from 'firebase'

let config = {
    apiKey: ******,
    authDomain: ******,
    databaseURL: ******,
    projectId: ******,
    storageBucket: ******,
    messagingSenderId: ******,
    appId: ******
};

firebase.initializeApp(config);

export default firebase;

【问题讨论】:

    标签: javascript reactjs firebase


    【解决方案1】:

    您需要在firebase控制台制定访问权限规则。

    据我所知,您需要制定一些规则以访问 firebase 实时数据库中的数据。
    如果您想了解 firebase 权限规则,请阅读我的reference

    你可以用下一个代码的错误来检查它

    try{
     stocksRef.on('value', (dataSnapshot) => {
                let list = dataSnapshot.val();
                this.setState({
                    stocks: Object.values(list)
                })
            })
    } catch(error) {
                 console.log(error);
    }
    

    参考

    1. Database rules - Firebase Documents

    【讨论】:

    • 谢谢。现在它起作用了!当我创建这个数据库时,我确定我设置了一个测试模式。
    • 哦,我明白了 :) 有时我也会忘记这件事 :) 哈哈
    【解决方案2】:

    这样试试

    async componentDidMount() {
            const stocksRef = await firebase.database().ref('list');
            console.log('popopok', stocksRef)
            stocksRef.on('value', (dataSnapshot) => {
                let list = dataSnapshot.val();
                this.setState({
                    stocks: Object.values(list)
                })
            })
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-10
      • 1970-01-01
      • 2022-09-23
      • 2021-10-25
      • 2019-07-08
      • 2019-10-29
      相关资源
      最近更新 更多