【问题标题】:Remove Object in Firebase? (JavaScript)删除 Firebase 中的对象? (JavaScript)
【发布时间】:2016-06-21 23:12:05
【问题描述】:

我正在尝试遍历我的应用程序中的一个对象,并在数据库中已有 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:对象不支持“删除”属性或方法

如果有人知道如何解决此问题或知道替代方法,我将不胜感激!

【问题讨论】:

    标签: javascript firebase firebase-realtime-database


    【解决方案1】:

    您的d 是一个DataSnapshot,它表示某个特定时间给定位置的值。不能直接删除。

    但是您可以查找该值的来源位置并在那里调用remove()

    d.ref.remove();
    

    完整的工作(和简化)sn-p:

    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

    【讨论】:

    • 感谢您的回复。现在我收到此错误:SCRIPT5002:预期功能。 ?
    • 我也在控制台中收到来自 Firebase 的警告:FIREBASE WARNING: Exception was throwed by user callback。类型错误:预期功能
    • 你能设置一个重现问题的jsfiddle/jsbin吗?向您展示如何以这种方式修复代码会更容易。
    • 非常感谢!我现在唯一的问题是它删除了 29 条最近的消息。有没有办法以相反的顺序对孩子进行排序,以免发生这种情况?非常感谢你的帮助! :)
    • 如果您搜索有关在 firebase 查询中颠倒顺序的问题,您会发现该主题已经讨论了很多。
    猜你喜欢
    • 2017-10-14
    • 1970-01-01
    • 1970-01-01
    • 2010-10-19
    • 1970-01-01
    • 1970-01-01
    • 2021-01-16
    • 2017-06-19
    • 1970-01-01
    相关资源
    最近更新 更多