2016-04-29 92 views
1

我試圖獲取我的firebase數據庫的最後100個條目,並讓該數組動態更新。 我在我的控制檯得到的錯誤是這樣的:從firebase獲取同步數組

204 Uncaught TypeError: ref.on is not a function

我不知道這意味着什麼。

代碼

function getSynchronizedArray(firebaseRef) { 
    var list = []; 
    syncChanges(list, firebaseRef); 
    return list; 
} 

function syncChanges(list, ref) { 
    ref.on('child_added', function _add(snap, prevChild) { 
    var data = snap.val(); 
    data.$id = snap.key(); 
    var pos = positionAfter(list, prevChild); 
    list.splice(pos, 0, data); 
    }); 
} 


function positionFor(list, key) { 
    for(var i = 0, len = list.length; i < len; i++) { 
    if(list[i].$id === key) { 
     return i; 
    } 
    } 
    return -1; 
} 

function positionAfter(list, prevChild) { 
    if(prevChild === null) { 
    return 0; 
    } 
    else { 
    var i = positionFor(list, prevChild); 
    if(i === -1) { 
     return list.length; 
    } 
    else { 
     return i+1; 
    } 
    } 
} 



$(function() { 
     var data = [], totalPoints = 100; 
     data = getSynchronizedArray('https://MYLINK.firebaseio.com/SOMETHING'); 

謝謝大家非常的幫助。

+0

似乎你的代碼的最後一部分是關閉的? – marvinhagemeister

+0

有些東西被切斷了,但這並不重要,不起作用的部分實際上是讓數組填滿。 – Qayse

+0

您正在調用'getSynchronizedArray('https://MYLINK.firebaseio.com/SOMETHING');'有一個參數,但它需要兩個參數:'syncChanges(list,ref)' –

回答

0

在你的代碼裁判只是一個字符串,而不是一個火力點的參考,所以你需要添加這樣的事情在你的代碼:

function syncChanges(list, ref) { 
    var Fref = new Firebase(ref); 
    Fref.on('child_added', function _add(snap, prevChild) { 

看看在火力documentation有關它的更多信息。

+0

好吧,它現在可以工作,但並不完全符合我的要求 – Qayse