2017-01-13 28 views
0

我正在調查對可能不存在的數據的查詢。在這種情況下,回調不會運行。據我所知,它應該運行並且snapshot.val()應該爲空,不是嗎?Firebase:數據庫引用'on'方法未運行回調(javascript)

這裏有一個剝離下來的例子:http://surfmaps.eu/trombone/case.html

有不執行回調內的console.log。

我在這裏錯過了什麼嗎?

再見和感謝,路易斯

代碼:

function getData(id) { 
    var ref=firebase.database().ref("support/"+id); 
    console.log("In getData, looking for ",ref); 

    // get support data from firebase 
    ref.on('value',function (snapshot) { 
     console.log("In Value"); 
     console.log(snapshot); 
    }); 

    console.log("end getData, looking for ",ref); 

} 

// on startup 
getData("abc"); 
+0

代碼似乎是爲我工作。哪個'console.log'沒有被解僱? – adrice727

回答

3

您沒有權限來讀取數據。看到這一點,你可以附上完成監聽並記錄它給你的錯誤:

var ref=firebase.database().ref("support/"+id); 
console.log("In getData, looking for ",ref); 

// get support data from firebase 
ref.on('value',function (snapshot) { 
    console.log("In Value"); 
    console.log(snapshot); 
}, function(error) { 
    console.error(error); 
}); 

console.log("end getData, looking for ",ref); 

這樣做表明:

Error: permission_denied at /support/abc: Client doesn't have permission to access the desired data.

+0

我一直在尋找一些錯誤的回調,但沒有意識到有一個,即使在閱讀文檔之後。實際上,這個回調看起來標記爲'cancelCallbackOrContext',這似乎有點誤導。 謝謝! – Vespas

+0

如果您沒有讀取權限,則會取消偵聽器 - 因此它的名稱。但確實應該有一些文件。不知道那裏去了。 –

相關問題