无法从Firebase获取数据

时间:2020-08-16 16:15:22

标签: javascript reactjs firebase

我无法从Firebase获取数据。 Firebase.js用于初始化Firebase,在App.js中,我尝试获取并使用它。 现在,当我尝试获取数据并将其显示在浏览器中时,我只会看到空白页。看起来我没有任何数据。 由于某些原因,我什至无法从stocksRef.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;

2 个答案:

答案 0 :(得分:1)

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

据我所知,您需要为Firebase实时数据库中的Access数据制定一些规则
而且,如果您想了解Firebase权限规则,只需阅读我的参考

您可以检查下一个代码的错误

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

答案 1 :(得分:0)

尝试这样

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)
            })
        })
    }