首页 > 解决方案 > 如何使用 Javascript 和 Firebase 从数据库中删除 child_object

问题描述

我在 Firebase-database 上设置了一些对象,并在带有“child_added”的 HTML 表上显示它们,以便在将它们添加到数据库后立即动态添加它们,并且表的每一行都必须有一个删除按钮,但我不知道如何制作一个工作按钮来删除相应的数据库对象。

我正在动态制作一个包含来自 Firebase 的信息的表格。数据库。我想在我的表的每一行上都有一个删除按钮,它可以从数据库中删除相应的表。

function vislag(snapshot) {
        let nylag = snapshot.val();
        let idrettRef = database.ref("idrett/" + nylag.Idrett);
        idrettRef.once("value", function(snapshotIdrett) {
            let idrettinfo = snapshotIdrett.val();
            txtTabell.innerHTML += `
            <tr>
              <td>${nylag.navn}</td><td>${nylag.klasse}</td>
              <td>${nylag.antall}</td><td>${idrettinfo.navn}</td>
              <td>
<input type="button" value="delete ${nylag.navn}" onclick="deletelag()"></td>
          </tr>`;
        });
    }

    lag.orderByChild("Idrett").on("child_added", vislag);


function deletelag() {
        databaseobjekt.remove()
    }

我想要 onclick 函数: deletelag() 从 Firebase 数据库中删除对象。我怎么做?

标签: javascripthtmlfirebasefirebase-realtime-database

解决方案


要从数据库中删除一个节点,您需要DatabaseReference指向该特定节点,然后调用remove()它的方法。

对于您共享的代码,似乎是:

database.ref("idrett/" + nylag.Idrett).remove();

如果您有一个孩子列表,并且您希望用户能够单独删除其中的任何一个,您通常必须将每个孩子的 ID 添加到您的 HTML 中。这样您就可以读取用户单击的项目的 ID,并删除该特定节点。

一个简单的例子可能是这样的:

database.ref('listitems').once('value', (snapshot) => {
  snapshot.forEach((child) => {
    let id = child.id;
    let name = child.val()
    let liElm = `<li id='${id}'>${name}</li>`;
    listElm.appendChild(liElm);
  })
})

现在,当有人点击 时li,您可以使用以下命令删除正确的子节点:

function onLiClick(e) {
  let id = e.target.id;
  database.ref('listitems').child(id).remove();
}
}

推荐阅读