从firebase获取数据不起作用

时间:2016-09-16 15:39:30

标签: javascript firebase firebase-realtime-database

我使用firebase初始化我的web应用程序,然后将新数据添加到数据库中:{' title':' hello world!'}。然后我尝试获取这些数据:database.ref().child('title')我得到了奇怪的对象: enter image description here

我的代码:

export class App extends Component {

    constructor(props) {
        super(props);

        // Initialize Firebase
        var config = {
            apiKey: "&&&&&&&dbBJY_ie3CbXtnL6M6QBEL2JqWI",
            authDomain: "&&&&&&&.firebaseapp.com",
            databaseURL: "&&&&&test-61197.firebaseio.com",
            storageBucket: "test-&&&&.appspot.com",
            messagingSenderId: "7&&&1193299"
        };
        firebase.initializeApp(config);

        // Get a reference to the database service
        var database = firebase.database();

        console.log(database.ref().child('title'));

    }

    login() {
        console.log('login');
        // Log the user in via Twitter

    }

  render() {
    return (
      <View style={styles.container}>
          <Touchable style={styles.loginBtn} onPress={ this.login }>
              <Text style={styles.loginBtnText}>login</Text>
          </Touchable>
      </View>
    );
  }
}

如何获取我的数据? Firebase版本:3.4.0

3 个答案:

答案 0 :(得分:2)

在Firebase中有两种检索数据的方法。首先是使用监听器等待RTDB上的事件发生:

 var myTitleRef =  database.ref('title');
  myTitleRef.on("value",function(snapshot){
     //snapshot contains the data you're looking for  
     HandleTitle(snapshot);
  });

另一种方法是在数据上调用REST GET,在这种情况下,您需要数据库的整个URL并添加&#34; .json&#34;在末尾。在这个例子中,我将使用jQuery:

var myurl = pathToYourDatabase + 'title.json';
$.ajax({
            url: myurl,

            jsonp: "callback",
            dataType: "jsonp",
            success: function( response ) {
                //Response contains data
                DoSomethingWithTitle(response);
            }
        });

有关详细信息,请阅读文档: https://firebase.google.com/docs/web/setup

答案 1 :(得分:2)

Firebase查询是异步的。因此,您需要注册一个回调,以便Firebase可以在结果准备就绪时通知您。

试试这个:

database.ref().child('title').on('value', (snapshot) => {
    console.log(snapshot.val());
});

您可以阅读this了解详情。

答案 2 :(得分:0)

引用为空数据库未被调用

示例:

正确的方式:

var data = database().ref('/your root destination').child('title');

您错过了数据库之后的()

更新: 您上面演示的代码和代码实际上是创建数据库条目。

现在从此条目中获取数据:

data.once('value').then(function(snapshot) {
  var objectData = snapshot.val();

});

希望这有帮助