如何删除/删除Firebase上的节点

How to delete/remove nodes on Firebase

本文关键字:删除 Firebase 节点 何删除      更新时间:2023-09-26

我正在将Firebase用于web应用程序。它是用简单的Javascript编写的,不使用任何外部库。

我可以使用".on("child_aded")"来"推送"和检索数据,但".remove()"并不能按照它所说的方式工作。根据API,

"Firebase.remove()-删除此Firebase位置的数据。子位置的任何数据也将被删除。删除的效果将立即可见。"

然而,移除并没有立即发生;只有当整个脚本运行完毕时。我需要移除,然后立即使用清除后的树。

示例代码:

ref = new Firebase("myfirebase.com") //works
ref.push({key:val}) //works
ref.on('child_added', function(snapshot){
//do stuff
}); //works
ref.remove()
//does not remove until the entire script/page is done

这里有一个类似的帖子,但我没有使用Ember库,尽管如此,它似乎是一个解决方法,应该像API解释的那样简单

问题是您在Firebase:的根上调用remove

ref = new Firebase("myfirebase.com")
ref.remove();

这将通过API删除整个Firebase。

不过,您通常需要删除其下的特定子节点,这需要使用

ref.child(key).remove();

我希望这段代码能帮助到别人——它来自谷歌Firebase的官方文档:

var adaRef = firebase.database().ref('users/ada');
adaRef.remove()
  .then(function() {
    console.log("Remove succeeded.")
  })
  .catch(function(error) {
    console.log("Remove failed: " + error.message)
  });

Firebase.remove()可能与大多数Firebase方法一样是异步的,因此您必须侦听事件才能知道什么时候发生了什么:

parent = ref.parent()
parent.on('child_removed', function (snapshot) {
    // removed!
})
ref.remove()

根据Firebase的文档,即使你失去了网络连接,它也应该能工作。如果您想知道更改何时实际与Firebase服务器同步,可以向Firebase.remove方法传递回调函数:

ref.remove(function (error) {
    if (!error) {
        // removed!
    }
}

删除记录。

 var db = firebase.database();                   
 var ref = db.ref(); 
 var survey=db.ref(path+'/'+path);    //Eg path is company/employee                
 survey.child(key).remove();          //Eg key is employee id

正如其他人所指出的,对.remove()的调用是异步的。我们都应该意识到,即使是以光速,也不会发生任何事情。

您所说的"即时"的意思是,下一行代码应该能够在调用.remove()之后执行。对于异步操作,下一行可能是数据被删除的时候,也可能是而不是——这完全取决于偶然性和经过的时间。

.remove()使用一个参数回调函数来帮助处理这种情况,以便在我们知道操作已经完成(有或没有错误)后执行操作。.push()采用两个参数,一个值和一个回调,就像.remove()一样。

这是经过修改的示例代码:

ref = new Firebase("myfirebase.com")
ref.push({key:val}, function(error){
  //do stuff after push completed
});
// deletes all data pushed so far
ref.remove(function(error){
  //do stuff after removal
});

如果您正在使用axios并尝试通过服务调用。

URL: https://react-16-demo.firebaseio.com/
Schema Name: todos
Key: -Lhu8a0uoSRixdmECYPE
axios.delete(`https://react-16-demo.firebaseio.com/todos/-Lhu8a0uoSRixdmECYPE.json`). then();

可以提供帮助。