使用 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());
         }
});