2017-10-16 4 views
0

Firebaseを使用してデータベースをセットアップしました。JSON情報を使用してデータベースを設定しました。 Firebaseのドキュメントから直接取得したコードがあり、データのスナップショットを取ってリアルタイムで更新します。これは私が必要なもののために素晴らしいですが、私はまた、これに同様のコンテンツのリストを生成するために、私のJSONの値にアクセスする必要があります。FirebaseからJSONオブジェクトを解析し、キー値のペアを使用してコンテンツを生成

var JSONStuff = json info on database 
for (every array in the JSON) 
{ 
    //MAKE THINGS 
} 

私は通常のPHPスクリプトおよびSQLデータベースでこれを行うが、私は使用していますFirebaseは初めてで、私は何が間違っているのか分かりません。ここまで私がこれまで持っていたことがあります。

はJavaScript:

var display = document.getElementById("resultsDisplay"); 
var dbRef = firebase.database().ref().child("workouts"); 
// Sync with Firebase in real time. 
dbRef.on("value", snap => 
{ 
    //display.innerHTML = JSON.stringify(snap.val(), null, 3); This correctly prints my JSON. 
    JSON.stringify(snap.val(), null, 3); 
}); 

JSON.parse(dbRef) //Trying to parse the JSON and do things with it. 
{ 
    for (var i = 0, len = dbRef.length; i < len; i++) 
    { 
    display.innerHTML = 'Routine: ' + dbRef.title + ' Exercises: ' + dbRef.name + '.'; 
    } 
}; 

HTML:エラー、私は私をいじって二重引用符があることを意味知っている:

<div id="resultsDisplay">boo</div> 

コンソールが私に "JSONに予期しないトークンhの捕捉されないでSyntaxError" を与えますパーサのどこかにありますが、わかりましたが、私はそれらを関数で使用していません。

私はnoobですので、おそらく完全に愚かなことをしていますが、どんな助けでも大歓迎です。

+0

値ではなくデータベース参照を 'JSON.parse'しようとしています。あなたは '.on( 'value')'コールバックの中で操作し、 'dbRef'ではなく、あなたのJSONに' snap.val() 'を使う必要があります。 –

+0

ありがとうございます。しかし、私が達成したのは、コンソールのエラーを取り除くことです。私はkey:valueのペアを間違って参照していると推測します。 – Brian

答えて

1

現在、データベース参照dbRefを解析しようとしていますが、データ自体は解析していません。ただ、あなたのアイデアを与えるために

var display = document.getElementById("resultsDisplay"); 
var dbRef = firebase.database().ref().child("workouts"); 

// Sync with Firebase in real time. 
dbRef.on("value", snap => { 
    var workoutsJSON = JSON.stringify(snap.val(), null, 3); 

    JSON.parse(workoutsJSON) { 
    for (var i = 0, len = dbRef.length; i < len; i++) { 
     display.innerHTML = 'Routine: ' + dbRef.title + ' Exercises: ' + dbRef.name + '.'; 
    } 
    }; 
}); 

はこれを行うにしてください。

+0

あなたの答えをありがとう、私はあなたのコードを実装する場合、コンソールはエラーを表示されませんが、同時にdivが更新されず、何も表示されません。私はこれが私のデータベースのキー:値のペアをどのように参照しているかという問題であると推測します。 – Brian

+0

UPDATE:key:valueのペアを参照することで問題が発生していません。 JSONをJS変数に変換して解析し、個々の値を出力することはできましたが、ループしないようにしました(forループで何か間違っている必要があります)。私はあなたのコードを使用してサーバーから同じ情報を印刷しようとしましたが、「未定義」とコンソールエラーは返されませんでした。 – Brian

+0

@ブライアンプランンを作ることは可能ですか?私はあなたのニーズに数分で解決します。 – Orlandster

関連する問題