Проблема с удалением значения из базы данных Firebase (Android)

#android #firebase-realtime-database #android-recyclerview

#Android #firebase-база данных в реальном времени #android-recyclerview

Вопрос:

все! Я хочу удалить значение из базы данных Firebase с помощью RecyclerView. Однако я не могу найти ключ дочернего элемента, который я хочу удалить.

Во-первых, я добавляю данные в базу данных следующим образом:

   String key = MainActivity.databaseReference.push().getKey();
  MainActivity.databaseReference.child(key).setValue(myAppModel);
  

Что касается удаления, в моем адаптере RecyclerView я записал OnClickListener в ImageView и успешно удалил элемент из списка!
Кроме того, я перепробовал множество способов удаления этого элемента из базы данных, но данные по-прежнему нетронуты.
Вот код:

 holder.appDelete.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mAppModelList.remove(position);
                notifyItemRemoved(position);
                notifyItemRangeChanged(position, mAppModelList.size());
               final ValueEventListener eventListener = new ValueEventListener() {
                   @Override
                   public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                       dataSnapshot.getValue(AppModel.class);
                       MainActivity.databaseReference.child(mAuth.getUid()).child(dataSnapshot.getRef().getKey()).removeValue();
                       System.out.println(dataSnapshot.getRef().getKey()); // it gives me user id...but in my MainActivity it gives the real key
                   }

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

                   }
               };
               MainActivity.databaseReference.addListenerForSingleValueEvent(eventListener);
            }
        });
  

Как я упоминал в комментарии к коду, GetRef().getKey() выдает мне идентификатор пользователя Firebase, например MAuth.getUid()
И в MainActivity я получаю реальное имя (ключ) дочернего элемента

  Query query = databaseReference;
            query.addChildEventListener(new ChildEventListener() {
                @Override
                public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
                    AppModel appModel = dataSnapshot.getValue(AppModel.class);
                    appModelResult.add(0, appModel);
                    AddAppDialog.setAppModelResult(appModelResult);
                    System.out.println(dataSnapshot.getRef().getKey());
                    reloadFragment(fragment);
                }
  

Что я должен сделать, чтобы удалить данные из базы данных?
Заранее всем спасибо!

Ответ №1:

Решена! Изначально, когда я хочу удалить элемент, я написал

 MainActivity.databaseReference.child(mAuth.getUid()).child(appModel.getAppId()).removeValue();
  

Однако, как я заметил, вам не следует указывать идентификатор пользователя

 MainActivity.databaseReference.child(appModel.getAppId()).removeValue();
  

И вот мы здесь!
Надеюсь, это может помочь всем