2016-06-21 36 views
0

我想通過我的應用程序中的對象進行循環,並在數據庫中已有30條消息之後刪除舊消息。這是我到目前爲止的代碼:刪除Firebase中的對象? (JavaScript)

var ref1 = firebase.database().ref("chatRooms/" + rm + "/messages"); 
var query = ref1.orderByChild("time"); 

query.once("value").then(function(l) { 
    l.forEach(function(d) { 
     ref1.once("value").then(function(snapshot1) { 
     var ast = snapshot1.numChildren(); // Getting the number of children 
     console.log(ast); 
     if (ast > 29) { 
     d.remove(); 

     } 
    }); 
    }); 
}); 

唯一的問題是,我收到各以下錯誤:

SCRIPT438: Object doesn't support property or method 'remove'.

如果有人知道如何解決這個問題,或可替代的人都知道,我'欣賞它!

回答

0

您的dDataSnapshot,它表示在某個特定時間給定位置的值。它不能直接刪除。

但你可以查找該值是從位置和通話remove()有:

d.ref.remove(); 

全部工作(和簡化的)片段:

function deleteMessages(maxCount) { 
    root.once("value").then(function(snapshot) { 
    var count = 0; 
    snapshot.forEach(function(child) { 
     count++; 
     if (count > maxCount) { 
     console.log('Removing child '+child.key); 
     child.ref.remove(); 
     } 
    }); 
    console.log(count, snapshot.numChildren()); 
    }); 

} 

deleteMessages(29); 

直播代碼示例:http://jsbin.com/tepate/edit?js,console

+0

感謝您的回覆。現在我收到此錯誤:SCRIPT5002:函數預期。 ? – Collin

+0

我也在控制檯中收到來自Firebase的此警告:** FIREBASE警告:用戶回調拋出異常。 TypeError:預期的功能**。 – Collin

+0

你可以設置一個jsfiddle/jsbin來重現問題嗎?向您展示如何以這種方式修復您的代碼會更容易。 –