使用 android 删除 firebase 中的元素
delete element in firebase with android
我有一个 firebase 数据结构,如下所示:
|---employees
|----KJSXd4ScEmJ6N4UFc5k
|---employeeName:"semah"
|---employeeAge:"24"
|----KJW3HRh5kxm_FgU9nNV
|---employeeName:"Alex"
|---employeeAge:"35"
现在我想删除节点-KJSXd4ScEmJ6N4UFc5k。但我只知道 "employeeName": semah。
我尝试删除节点:
mFirebaseDatabaseReference
.child("employees")
.child("employeeName")
.child("semah")
.getParent()
.setValue(null);
但这行不通,因为 "Invalid Firebase Database path: $member. Firebase Database paths must not contain '.', '#', '$', '[', or ']'"
所以我的问题是,如何删除节点:“-KJSXd4ScEmJ6N4UFc5k”只知道:"semah" 或如何通过生成的 ID“-KJSXd4ScEmJ6N4UFc5k”删除元素。
提前致谢。
对于您的情况,您可以构建一个查询来检索要删除的项目。
类似于:
Firebase refEmployees = new Firebase("..../employees");
Query queryRef = refEmployees.orderByChild("name").equalTo("semah");
queryRef..addListenerForSingleValueEvent(
new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String key=snapshot.getKey();
//Remove the item
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
由于您没有对键 KJSXd4ScEmJ6N4UFc5k
的引用,您需要检索该值并尝试使用检索到的值的引用删除它。像这样
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());
}
});
我有一个 firebase 数据结构,如下所示:
|---employees
|----KJSXd4ScEmJ6N4UFc5k
|---employeeName:"semah"
|---employeeAge:"24"
|----KJW3HRh5kxm_FgU9nNV
|---employeeName:"Alex"
|---employeeAge:"35"
现在我想删除节点-KJSXd4ScEmJ6N4UFc5k。但我只知道 "employeeName": semah。 我尝试删除节点:
mFirebaseDatabaseReference
.child("employees")
.child("employeeName")
.child("semah")
.getParent()
.setValue(null);
但这行不通,因为 "Invalid Firebase Database path: $member. Firebase Database paths must not contain '.', '#', '$', '[', or ']'"
所以我的问题是,如何删除节点:“-KJSXd4ScEmJ6N4UFc5k”只知道:"semah" 或如何通过生成的 ID“-KJSXd4ScEmJ6N4UFc5k”删除元素。
提前致谢。
对于您的情况,您可以构建一个查询来检索要删除的项目。
类似于:
Firebase refEmployees = new Firebase("..../employees");
Query queryRef = refEmployees.orderByChild("name").equalTo("semah");
queryRef..addListenerForSingleValueEvent(
new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String key=snapshot.getKey();
//Remove the item
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
由于您没有对键 KJSXd4ScEmJ6N4UFc5k
的引用,您需要检索该值并尝试使用检索到的值的引用删除它。像这样
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());
}
});