2016-09-16 16 views
0

firebaseを使ってWebアプリケーションを初期化した後、新しいデータをデータベースに追加します。{'title': 'hello world!'}。 database.ref().child('title')を、私は奇妙なオブジェクトを得ました:それから私は、このデータを取得しよう enter image description herefirebaseからのデータ取得が機能しない

マイコード:

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

+0

コードを表示できますか?私の推測では、そのオブジェクトに対して '.val()'を呼び出さなければならないということです。 – yihangho

+0

はい、それは私のコードです:[jsfiddle link](https://jsfiddle.net/1mxc9zsg/) – Slava

答えて

2

Firebaseクエリは非同期であるのに役立ちます。したがって、Firebaseが結果の準備ができたら通知できるように、コールバックを登録する必要があります。

これを試してみてください:

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

あなたはより多くの情報のためthisを読むことができます。

+0

それは私のために働きます。 – Slava

2

Firebaseでデータを取得する方法は2つあります。最初のリスナーを使用してRTDB上で発生するイベントを待つことです。

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

他の方法は、「RESTは、あなたのデータにGETこの場合には、あなたがDBのURL全体を必要とし、追加呼び出すことです.json "と表示されます。この例では、私は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

0

あなた参照が空で、データベースはと呼ばれていません。

例:

正しい方法:

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

データベース後()を欠落していました。

更新日: 上記で示したコードとコードは、実際にデータベースエントリを作成することです。今

このエントリからデータを取得する:

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

}); 

ホープこれは

+0

'.ref'メソッドの引数はオプションです。指定されていない場合、ルートへの参照が返されます。子供の「タイトル」がルートの直接の子孫であると仮定している場合は、https://firebase.google.com/docs/reference/js/firebase.database.Reference – yihangho

+0

を参照してください。 – KpTheConstructor

+0

そうです。あなたの答えが '.ref()'がうまくいかないと誤解しました。 – yihangho

関連する問題