使用Android删除Firebase中的元素 [英] delete element in firebase with android
问题描述
我有一个firebase数据结构,如下所示:
I have a firebase data structure which looks like this:
|---employees
|----KJSXd4ScEmJ6N4UFc5k
|---employeeName:"semah"
|---employeeAge:"24"
|----KJW3HRh5kxm_FgU9nNV
|---employeeName:"Alex"
|---employeeAge:"35"
现在,我要删除节点-KJSXd4ScEmJ6N4UFc5k.但是我只知道"employeeName":semah. 我尝试使用以下方法删除该节点:
Now I want to delete the node -KJSXd4ScEmJ6N4UFc5k. But I only know the "employeeName": semah. I tried to delete the node with:
mFirebaseDatabaseReference
.child("employees")
.child("employeeName")
.child("semah")
.getParent()
.setValue(null);
但这将不起作用,因为无效的Firebase数据库路径:$member.Firebase数据库路径不得包含.",#","$","["或]""
but this won't work because "Invalid Firebase Database path: $member. Firebase Database paths must not contain '.', '#', '$', '[', or ']'"
所以我的问题是,如何仅知道"semah"或如何通过生成的ID"-KJSXd4ScEmJ6N4UFc5k"删除元素?如何删除节点"-KJSXd4ScEmJ6N4UFc5k".
So my question is, how can I delete the node: "-KJSXd4ScEmJ6N4UFc5k" only knowing: "semah" or how to remove element by the generated id "-KJSXd4ScEmJ6N4UFc5k".
谢谢.
推荐答案
由于您没有对键KJSXd4ScEmJ6N4UFc5k
的引用,因此需要检索该值,并尝试使用检索到的值ref删除它.像这样
Since you don't have the reference to the key KJSXd4ScEmJ6N4UFc5k
, you need to retrieve the value and try deleting it with the ref of value retrieved. Something like this
database.getReference("employees").orderByChild("employeeName").equalTo("semah").addListenerForSingleValueEvent(
new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot child: dataSnapshot.getChildren()) {
child.getRef().setValue(null);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.w("TodoApp", "getUser:onCancelled", databaseError.toException());
}
});
这篇关于使用Android删除Firebase中的元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!