Как удалить документ в коллекции в базе данных firestore, используя предложение where? - PullRequest
0 голосов
/ 02 ноября 2019

Я использую приведенный ниже код для ссылки на конкретный документ, который мне нужно удалить, используя предложение "where" в коллекции, но я не могу определить функцию для выполнения действия, я использую это в Android Java и FireStoreбаза данных

private void deleteDocument() {
        final CollectionReference docref = (CollectionReference) db.collection("users").document(CommentAuthorId).collection("notifications_received").whereEqualTo( "comment_id", Comment_Id );

      docref.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
          @Override
          public void onComplete(@NonNull Task<QuerySnapshot> task) {
              if (task.isSuccessful()) {

                  for (QueryDocumentSnapshot document : task.getResult()) {

                      Log.d(TAG, document.getId() + " => " + document.getData());

                  }
              } else {
                  Log.d(TAG, "Error getting documents: ", task.getException());
              }
          }
      });
    }

Ответы [ 3 ]

1 голос
/ 02 ноября 2019

Firestore не предлагает функцию «удалить где», такую ​​как SQL, которая удаляет документы в соответствии с каким-либо фильтром.

Вместо этого вам нужно просто запросить все документы и повторить их все (как и сейчас)), затем удалите каждый в отдельности, используя ссылку, предоставленную в снимке с помощью getReference () :

for (QueryDocumentSnapshot document : task.getResult()) {
    document.getReference().delete();
}
0 голосов
/ 02 ноября 2019

Вы должны иметь возможность вызывать метод удаления в самой ссылке.

0 голосов
/ 02 ноября 2019

Попробуйте, это работает для меня:

 holder.imgCross.setOnClickListener(v -> {
        AlertDialog.Builder alertDialog = new AlertDialog.Builder(context);
        alertDialog.setTitle("Do you want to Delete News  in your list");
        alertDialog.setPositiveButton("CANCEL", (dialog, which) -> dialog.cancel());
        alertDialog.setNegativeButton("YES", (dialog, which) -> {

            FirebaseFirestore.getInstance().collection("NewsAndNotification").document(newsandNotiModel.getId())
                    .delete().addOnSuccessListener(aVoid -> {
                notifyDataSetChanged();
            });

          /*  Toast.makeText(context, "Added in SOS list", Toast.LENGTH_SHORT).show();*/

        });
        AlertDialog dialog = alertDialog.create();
        dialog.show();
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...