在Firebase中删除对象? (JavaScript的)

时间:2016-06-21 12:21:23

标签: 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("value").then(function(snapshot1) {
      var ast = snapshot1.numChildren(); // Getting the number of children
      console.log(ast);
      if (ast > 29) {
        d.remove();

      }
    });
  });
});

唯一的问题是每个人都收到以下错误:

  

SCRIPT438:对象不支持属性或方法'remove'

如果有人知道如何解决这个问题,或者知道替代方案,我会很感激!

1 个答案:

答案 0 :(得分:1)

您的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