繁体   English   中英

删除具有特定键的所有数据库条目

[英]Delete all Database entries with certain key

我的应用中有关注者。 如果有人关注某人,它会为该用户创建一个新条目,该用户被一个包含关注者用户 ID 的孩子关注。 这就是我的结构的样子

如果用户删除他们的帐户,我希望他们的用户 ID 的所有条目都被删除。 这可能吗?

我假设您想从任何可能的followed user中删除follower的 UID:

如果这是您想要的,那么您必须阅读Follow节点,并删除follower UID的任何可能存在:

//the user ID

String userID = FirebaseAuth.getInstance().getCurrentUser().getUid();

//the main reference node "Follow"

DatabaseReference mDatabase = FirebaseDatabase.getInstance().getReference().child("Follow");


//read the node and loop through all UIDs

ValueEventListener listener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {

     //loop through all UIDs under "Follow" and remove the user ID that deleted his/here account from "followers"

     for(DataSnapshot ds : dataSnapshot.getChildren()){

       if(ds.child("followers").child(userID).exists()){

         ds.child("followers").child(userID).getRef().removeValue();

       }
     }

    }

    @Override
    public void onCancelled(DatabaseError databaseError) {

        Log.w(TAG, "loadPost:onCancelled", databaseError.toException());

    }
};
mDatabase.addValueEventListener(listener);

如果用户删除帐户,则应从整个 firebase 数据结构中删除其 UID,因此您可以执行以下操作: 如果要删除其帐户的用户已登录,则执行以下操作:您可以提供一个名为Delete Account的按钮并在该按钮的 onclicklistener 上实现以下代码。

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
DatabaseReference followRef = FirebaseDatabase.getInstance().getReference().child("Follow").child(user.getUid()).child("following");
followRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

            for (DataSnapshot data : dataSnapshot.getChildren()) {
                //Getting User id from dataSnapshot
                String userid = data.getValue(String.class);
                DatabaseReference Ref = FirebaseDatabase.getInstance().getReference().child("Follow").child(userid).child("followers").child(user.getUid());
                Ref.removeValue();
             }
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

            Log.i(TAG, "onCancelled: Error: " + databaseError.getMessage());

        }
    });

    DatabaseReference followRef1 = FirebaseDatabase.getInstance().getReference().child("Follow").child(user.getUid());
    followRef1.removeValue();

    DatabaseReference followRef2 = FirebaseDatabase.getInstance().getReference().child("Users").child(user.getUid());
    followRef2.removeValue();

如果有任何疑问,请告诉我谢谢。

要删除密钥,请尝试以下操作:

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
DatabaseReference followRef = FirebaseDatabase.getInstance().getReference().child("Follow");
followRef.child(user.getUid()).removeValue();

获取当前登录的用户,然后调用removeValue()删除节点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM