如何在javascript中删除firebase实时数据库中的节点
我很难删除firebase实时数据库中的节点 这就是我的firebase实时数据库的外观: 这就是我所尝试的,遵循和: (一) 使用上面的代码,当我单击删除整个数据时(包括聊天在内的所有节点)都被删除了 (二) 我让它按预期工作,但它只删除了/chats中的最后一个节点,我想指定要删除的如何在javascript中删除firebase实时数据库中的节点,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,我很难删除firebase实时数据库中的节点 这就是我的firebase实时数据库的外观: 这就是我所尝试的,遵循和: (一) 使用上面的代码,当我单击删除整个数据时(包括聊天在内的所有节点)都被删除了 (二) 我让它按预期工作,但它只删除了/chats中的最后一个节点,我想指定要删除的chat/uid (三) 这根本没有导致任何事情发生。我在try/catch中看到了这一点,单击“delete”导致尝试运行,但没有发现错误。数据库里什么也没发生 (四) 结果与上面第3条相同——没有发生任何事
chat/uid
(三)
这根本没有导致任何事情发生。我在try/catch中看到了这一点,单击“delete”导致尝试运行,但没有发现错误。数据库里什么也没发生
(四)
结果与上面第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();
});
});
您的第四个示例应该有效,但您有一个输入错误:
let chatRef = db.ref("/chats/MJy8cxO85ldEnDScsWZ");
它应该是:
let chatRef = db.ref("/chats/-MJy8cxO85ldEnDScsWZ");
您缺少了“M”之前的“-”。您的第一次尝试看起来差不多正确。我唯一要更改的是使用
.once(“value”,…)
而不是谢谢菲尔!我找到并再次尝试了我的第一次尝试,稍微重写了一下:“let chatRef=db.ref(“/chats”);chatRef.orderByChild(“uid”).equalTo(chatId).once(“value”).then(函数(快照){snapshot.forEach((childSnapshot)=>{//删除每个子chatRef.child(childSnapshot.key).remove();};});`但是,这会删除聊天中的全部数据,而不是单个节点/太棒了,谢谢你!你说得对,我没有意识到-M
是字符串的一部分。您知道是否有一种基于uid
(例如5zuzvwybydcbteclgpm0T08bevn1
)的值检索密钥(例如-mjy8cxo85ldenscswz
)的简单方法吗?当然,您应该学习如何按照文档中的描述执行筛选查询。
let chatRef = db.ref("/chats/MJy8cxO85ldEnDScsWZ");
chatRef.remove();
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();
});
});
let chatRef = db.ref("/chats/MJy8cxO85ldEnDScsWZ");
let chatRef = db.ref("/chats/-MJy8cxO85ldEnDScsWZ");