Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to delete a node in firebase realtime database in javascript

I'm having a difficult time deleting a node in a firebase realtime database.

This is what my firebase realtime database looks like: enter image description here

This is what I tried, following delete node in firebase and How to delete/remove nodes on Firebase:

1)

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

With the above code, when I clicked to delete the entire data (all of the nodes, including chat) was deleted.

2)

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

I got this working as intended, but it only removes the last node in /chats, and I want to specify the chat/uid I want to remove.

3)

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

This simply caused nothing to happen. I had this in a try/catch, and clicking on "delete" led to the try running, but no errors were caught. And nothing happened in the database.

4)

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

Same outcome as number 3 above -- nothing happened, and no errors were caught in the try/catch.

UPDATE: I tried the following, but this removes the entire chats data instead of only the node I want deleted:

      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();
          });
        });
like image 479
LNA Avatar asked Jul 24 '26 04:07

LNA


1 Answers

Your fourth example should work, except you have a typo:

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

It should instead be:

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

You're missing the "-" before "M".

like image 135
Doug Stevenson Avatar answered Jul 27 '26 03:07

Doug Stevenson



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!