【问题标题】:How to delete from firebase realtime database?如何从firebase实时数据库中删除?
【发布时间】:2016-09-20 07:50:14
【问题描述】:

我在 Android 应用中使用 Firebase 实时数据库,并且有这样的数据:

如何删除“Apple”记录(如图所示)?

根据文档,要删除您在参考上调用 removeValue() 的项目。但要获得参考,我需要孩子 id。因为是随机生成的id(-KISNx87aYigsH3ILp0D),怎么删除呢?

【问题讨论】:

  • 感谢#Amit 和@Frank van Puffelen 的提问和回答

标签: android firebase firebase-realtime-database


【解决方案1】:

如果您不知道要删除的项目的键,您首先需要查询数据库以确定这些键:

DatabaseReference ref = FirebaseDatabase.getInstance().getReference();
Query applesQuery = ref.child("firebase-test").orderByChild("title").equalTo("Apple");

applesQuery.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for (DataSnapshot appleSnapshot: dataSnapshot.getChildren()) {
            appleSnapshot.getRef().removeValue();
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        Log.e(TAG, "onCancelled", databaseError.toException());
    }
});

【讨论】:

  • 非常感谢。这正是我想要的。
  • 为什么我找不到DatabaseReference
  • 如果有多个标题为“Apple”的节点怎么办?
  • 我想,你写的那部分 getInstance().ref() 不小心。该代码应该是 FirebaseDatabase.getInstance().getReference();
  • 很好,已修复。
【解决方案2】:

这解决了我的问题

 mPostReference = FirebaseDatabase.getInstance().getReference()
                        .child("quotes").child(mPostKey);
                mPostReference.removeValue();

【讨论】:

    【解决方案3】:

    如果您使用的是 firebase-admin,您可以简单地尝试一下

    admin.ref(`/users/${userid}`).remove()
    

    这对我有用。

    还要记得使用asyncawait 语法。

    【讨论】:

      【解决方案4】:

      您可以使用此代码:

      onDeletePost(id:string){
      return this.http.delete(`https://my-angular8-prjt.firebaseio.com/posts/${id}.json`).subscribe();
      }
      

      【讨论】:

      • 你应该详细说明你的答案是做什么的
      【解决方案5】:

      根据您删除数据的方式和原因,您可以使用这些:

      // Could store the push key or get it after push
      String newPostKey = yourDatabase.child('firebase-test').push({
          something:something
      }).key();
      
      // Depends how you get to here
      howYouGotHereId.parent().setValue(null);
      

      Firebase Save Data 3.0

      【讨论】:

        【解决方案6】:

        假设 images 是您要清除的 firebase 数据库的目录。

        private static DatabaseReference mDatabase;
        public static void clearData(){
            mDatabase = FirebaseDatabase.getInstance().getReference();
            mDatabase.child("images").setValue(null);
        }
        

        这里的 images 是数据库的父目录。如果要清除 images 目录中的嵌套目录 (DCIM),以便保留其中的剩余数据。

        在那种情况下你可以这样做,

        mDatabase = FirebaseDatabase.getInstance().getReference();
        mDatabase.child("images").child("DCIM").setValue(null);
        

        作为对查询的回应,请尝试使用空值setValue(null)的setValue方法从firebase数据库中清除数据

        【讨论】:

          猜你喜欢
          • 2021-06-04
          • 1970-01-01
          • 1970-01-01
          • 2021-09-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多