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

use*_*957 51 javascript web firebase

我正在使用Firebase作为网络应用.它是用普通的Javascript编写的,不使用外部库.

我可以使用'.on("child_added")'"推送"和检索数据,但是'.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
Run Code Online (Sandbox Code Playgroud)

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

Fra*_*len 88

问题是您调用removeFirebase的根目录:

ref = new Firebase("myfirebase.com")
ref.remove();
Run Code Online (Sandbox Code Playgroud)

这将通过API删除整个Firebase.

您通常希望删除它下面的特定子节点,您可以使用以下方法:

ref.child(key).remove();
Run Code Online (Sandbox Code Playgroud)

  • 只要安全规则允许,您就可以在Firebase实例的根目录上调用remove().我刚刚测试过,确保这里没有任何可疑的东西; 它工作正常. (9认同)

Ula*_*Ula 14

我希望此代码可以帮助某人 - 它来自官方的Google 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)
  });
Run Code Online (Sandbox Code Playgroud)


Gop*_* AP 8

删除记录.

 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
Run Code Online (Sandbox Code Playgroud)


Dav*_*ton 7

正如其他人已经注意到,调用.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
});
Run Code Online (Sandbox Code Playgroud)


szi*_*mek 5

Firebase.remove() 就像大多数Firebase方法是异步的一样,因此您必须侦听事件以了解何时发生:

parent = ref.parent()
parent.on('child_removed', function (snapshot) {
    // removed!
})
ref.remove()
Run Code Online (Sandbox Code Playgroud)

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

ref.remove(function (error) {
    if (!error) {
        // removed!
    }
}
Run Code Online (Sandbox Code Playgroud)