I'm having a difficult time deleting a node in a firebase realtime database.
This is what my firebase realtime database looks like:
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();
});
});