移除Firebase中的对象?(JavaScript)
我正在尝试循环通过我的应用程序中的一个对象,并在数据库中已有30条消息后删除旧消息。以下是我目前的代码:移除Firebase中的对象?(JavaScript),javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,我正在尝试循环通过我的应用程序中的一个对象,并在数据库中已有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("valu
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”
如果有人知道如何解决这个问题,或者知道其他解决方案,我将不胜感激 您的
d
是一个DataSnapshot
,它表示某个特定时间给定位置的值。它不能直接删除
但您可以查找该值的来源位置,并在那里调用remove()
:
d.ref.remove();
完整工作(和简化)代码段:
实时代码示例:感谢您的回复。现在我收到这个错误:SCRIPT5002:预期函数?我还在控制台中收到来自Firebase的警告:Firebase警告:用户回调引发异常。TypeError:应为函数。能否设置一个JSFIDLE/jsbin来重现该问题?这将更容易向您展示如何以这种方式修复代码。非常感谢!我现在唯一的问题是它删除了29条最近的消息。有没有办法把孩子们按相反的顺序排列,这样就不会发生这种情况??非常感谢您的帮助!:)如果您在firebase查询中搜索有关颠倒顺序的问题,您会发现该主题已经讨论了很多。
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);