我正在尝试遍历我的应用中的对象,并在数据库中已有30条消息后删除旧消息。到目前为止,这是我的代码:
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:对象不支持属性或方法'remove'。
如果有人知道如何解决这个问题,或者知道替代方案,我会很感激!
答案 0 :(得分:1)
您的d
是DataSnapshot
,表示某个特定时间某个位置的值。它无法直接删除。
但您可以查找该值所在的位置并在那里调用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);