我想使用once
方法從Firebase ref檢索數據,但沒有收到快照中的任何數據。 下面是簡單的數據檢索:使用`once`回調檢索Firebase值使用事務
編輯後進一步檢查,我發現了一個事務正在once
值聽者後不久調度。 (爲了簡單起見,我將收聽該代碼例如後放置交易直接。)
dataRef.once('value', function (snapshot) {
snapshot.val(); // returns `null`
});
dataRef.transaction(function (currentValue) {
if (currentValue) {
// make changes
}
return currentValue;
});
有一個在此火力REF數據。爲了驗證,我嘗試使用on
而不是once
。在這種情況下,回調會被調用兩次:
dataRef.on('value', function (snapshot) {
snapshot.val(); // returns `null` first, then called again and returns correct value
});
是什麼導致了這種行爲?我希望快照在第一次調用回調時具有正確的值。否則,once
方法沒有用處。
我用'once'很多次,要知道,它**可以**工作。很可能你正在做一些不同的事情,不幸的是,這些代碼片段很難說清楚。你可以在你的問題(點擊'編輯',然後'代碼片段')或jsfiddle/jsbin中提供問題的最小複製? – 2014-10-02 01:38:39
我也曾經使用過一次,至少......犯錯一次,取得了一些成功;數以千計的開發人員和數十名非常突出的企業客戶也都這樣做了。 – Kato 2014-10-02 16:20:41
感謝您的理智檢查,您是對的,有其他事情正在進行。經過更多的挖掘和檢查之後,我發現一筆交易正在計劃在'曾經'價值監聽者之後不久。我將更新原始問題以反映新信息。 – Brad 2014-10-02 20:41:16