2017-01-11 224 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); 

在最後一行中,它表示snap未定義。我該如何解決?「未捕獲的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); 
}); 
相關問題