当前位置: 首页 > 知识库问答 >
问题:

如何在 javascript 中删除基于火力的实时数据库中的节点

宣俊豪
2023-03-14

我很难删除 firebase 实时数据库中的节点。

这就是我尝试的,在Firebase中删除节点以及如何在Firebase上删除/删除节点:

1)

     let chatRef = db.ref("/chats");
      var query = chatRef.orderByChild("uid").equalTo(chatId);
      query.on("child_added", (snapshot) => {
        snapshot.ref.remove();
      });

使用上面的代码,当我点击删除整个数据(所有节点,包括聊天)时被删除。

2)

      chatRef.limitToLast(1).once("value", (snapshot) => {
        snapshot.forEach((deedSnapshot) => {
          deedSnapshot.ref.remove();
        });
      });

我按预期工作,但它只删除了/chats中的最后一个节点,并且我想指定要删除的聊天/ uid

3)

      let chatRef = db.ref("/chats");
      chatRef.child("5ZuZvUyByDcbteclgpM0t08beVn1").remove();

这只是导致什么也没发生。我在一个try/catch中遇到了这种情况,单击“delete”会导致try运行,但是没有捕获到任何错误。数据库里什么也没发生。

4)

      let chatRef = db.ref("/chats/MJy8cxO85ldEnDScsWZ");
      chatRef.remove();

结果与上面的数字 3 相同 - 什么也没发生,在 try/catch 中没有发现任何错误。

更新:我尝试了以下操作,但这将删除整个聊天数据,而不是我想要删除的节点:

      let chatRef = db.ref("/chats");
      chatRef
        .orderByChild("uid")
        .equalTo(chatId)
        .once("value")
        .then(function (snapshot) {
          snapshot.forEach((childSnapshot) => {
            //remove each child
            chatRef.child(childSnapshot.key).remove();
          });
        });

共有2个答案

禹正阳
2023-03-14

我参加聚会有点晚了。我想建议另一种方式。

要删除一个节点,我们可以在< code>set中传递null值

import { database } from 'firebase-admin';

    const db = database();
        const ref = db.ref('server/saving-data/fireblog');
    
        dataRef.set(null, (error) => {
      if (error) {
        console.log('Data could not be removed.' + error);
      } else {
        console.log('Data removed successfully.');
      }
    });
蒋何平
2023-03-14

你的第四个例子应该有效,除非你有一个错别字:

let chatRef = db.ref("/chats/MJy8cxO85ldEnDScsWZ");

它应该是:

let chatRef = db.ref("/chats/-MJy8cxO85ldEnDScsWZ");

您缺少“M”之前的“-”。

 类似资料: