//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
。我该如何解决这个问题?
答案 0 :(得分: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);
});