Удалить все записи базы данных с определенным ключом - PullRequest
1 голос
/ 29 апреля 2020

У меня есть подписчики в моем приложении. Если кто-то следует за кем-то, он создает новую запись для пользователя, за которой следует дочерний элемент, содержащий идентификатор пользователя подписчика. This is how my structure looks like

Если пользователь удаляет свою учетную запись, я хочу, чтобы все записи его идентификатора пользователя были удалены. Это возможно?

Ответы [ 3 ]

1 голос
/ 29 апреля 2020

Я предполагаю, что вы хотите удалить UID follower из любого возможного followed user:

Если это то, что вы хотите, то вы должны прочитать узел 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);
1 голос
/ 30 апреля 2020

Если пользователь удаляет учетную запись, то его UID должен быть удален из всей структуры данных Firebase, чтобы вы могли сделать следующее: Если пользователь, который собирается удалить свою учетную запись, вошел в систему, выполните следующие действия: Вы можете дать кнопку с именем Удалить учетную запись и внедрить следующий фрагмент кода в 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();

Если какой-либо запрос, пожалуйста, дайте мне знать Спасибо.

0 голосов
/ 29 апреля 2020

Чтобы удалить ключ, попробуйте следующее:

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

Получите текущего пользователя, вошедшего в систему, а затем вызовите removeValue(), чтобы удалить узел.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...