【问题标题】:Firebase - Delete a nodeFirebase - 删除节点
【发布时间】:2016-08-01 03:50:19
【问题描述】:

我正在构建一个 ionic+angular+firebase 应用程序。 我无法从我的 firebase 集合中删除节点。我有一个 html 视图,它显示数组中的项目列表(使用 ng-repeat)。这就是我的视图:

test@testmail.com : 23
fire@firemail.com : 784

我有一个删除按钮,允许用户从数组中删除一个项目,这反过来应该从我的 firebase 集合中删除该对象。我想使用 eventid 订购集合,然后使用 bill:23 和电子邮件删除节点:"test@testmail.com"

Bill
-KMhWUkwDFwlRvqv0kDG
  bill: 23
  email: "test@testmail.com"
  eventid: **42539660**

-KN0_OUYJf_XQJSLPgmi
 bill: 784
 email: "fire@firemail.com"
 eventid: **42539660**

我可以使用查询获得所有带有特定 eventid 的账单:

var id = 42539660;
billref.orderByChild('eventid').equalTo(id).on("value", function (snapshot) {
}

但我不确定如何从这里继续删除特定节点。感谢您的宝贵时间。

【问题讨论】:

    标签: javascript firebase firebase-realtime-database


    【解决方案1】:

    如果要删除查询匹配的节点:

    var id = 42539660;
    billref.orderByChild('eventid').equalTo(id).on("value", function (snapshot) {
      snapshot.forEach(function(childSnapshot) {
        childSnapshot.ref.remove();
      });
    }
    

    您也可以使用child_added 来消除循环的需要:

    var id = 42539660;
    billref.orderByChild('eventid').equalTo(id).on("child_added", function (snapshot) {
      snapshot.ref.remove();
    }
    

    【讨论】:

    • 谢谢弗兰克。我更改了逻辑以检索出现在数组中的项目的 firebase 推送 id,然后使用推送 id 删除节点。