2017-01-11 8 views
0
//creating references 
const dbRefObject = firebase.database().ref().child("object"); 

//syn object changes 

dbRefObject.on('value', snap => console.log(snap.val())); 

preObject.innerHTML = JSON.stringify(snap.val(), null, 3); 

最後の行では、が定義されていません。これをどうやって解決するのですか?"キャッチされていないReferenceError:スナップが定義されていません"

+3

はSOへようこそ。どのように何を尋ねるのかを知るには[ヘルプ]をご覧ください。ヒント:任意のコードと修正要求の代わりに[mcve]を投稿してください。スナップは、定義されたhtmlフィールドでない限り、突然どのように値を取得しますか?もしそうなら、フィールドはどこですか? – mplungjan

答えて

1

あなたが戻って古典的なJavaScriptの表記に切り替える場合は、コードが彼のと同等です:

function callback(snap) { 
    console.log(snap.val()) 
} 

//creating references 
const dbRefObject = firebase.database().ref().child("object"); 

//syn object changes 

dbRefObject.on('value', callback); 

preObject.innerHTML = JSON.stringify(snap.val(), null, 3); 

あなたが最後の行にsnapにアクセスすることができない理由は、おそらく簡単だことで:snap変数だけですコールバック関数で定義/使用可能。

snapをグローバルに宣言しても、コールバックが非同期でトリガーされるため、コードが機能します。だから今度はsnap.val()と呼ばれる石灰によって、コールバック(とsnap)はまだ利用できません。

溶液をにスナップショットコールバックへのアクセスを必要とするコードを移動することである。

//creating references 
const dbRefObject = firebase.database().ref().child("object"); 

//syn object changes 

dbRefObject.on('value', snap => { 
    preObject.innerHTML = JSON.stringify(snap.val(), null, 3); 
}); 
関連する問題