Не удается удалить поле из хранилища огня - PullRequest
0 голосов
/ 20 июня 2020

Я не могу удалить поле из firestore

else if(starPosition == 0){
   Map<String, Object> deleteRating = new HashMap<>();
   deleteRating.put(inititalRating + "_star", documentSnapshot.getLong(inititalRating + "_star") - 1);
   deleteRating.put("average_rating", String.valueOf(calculateAverageRating(starPosition-inititalRating,true)));
   deleteRating.put("total_ratings", documentSnapshot.getLong("total_ratings") - 1);

   firebaseFirestore.collection("PRODUCTS").document(productID)
           .update(deleteRating).addOnCompleteListener(new OnCompleteListener<Void>() {
       @Override
       public void onComplete(@NonNull Task<Void> task) {
           if (task.isSuccessful()) {
               Map<String, Object> ratingUpdate = new HashMap<>();
               ratingUpdate.put("list_size", DBqueries.myRatedIds.size() - 1);
               ratingUpdate.put("product_ID_" + DBqueries.myRatedIds.size(), FieldValue.delete());
               ratingUpdate.put("rating_" + DBqueries.myRatedIds.size(), FieldValue.delete());

               firebaseFirestore.collection("USERS").document(currentUser.getUid()).collection("USER_DATA").document("MY_RATINGS")
                       .update(ratingUpdate).addOnCompleteListener(new OnCompleteListener<Void>() {
                   @Override
                   public void onComplete(@NonNull Task<Void> task) {

                   }
               });


           }
       }
   });    

}

Поле не удалено Я использовал здесь FieldValue.delete ()

Screenshot firestore fielsd

1 Ответ

1 голос
/ 20 июня 2020

Ваш счетчик отключен на единицу. Вы запускаете:

   Map<String, Object> ratingUpdate = new HashMap<>();
   ratingUpdate.put("list_size", DBqueries.myRatedIds.size() - 1);
   ratingUpdate.put("product_ID_" + DBqueries.myRatedIds.size(), FieldValue.delete());
   ratingUpdate.put("rating_" + DBqueries.myRatedIds.size(), FieldValue.delete());

   firebaseFirestore.collection("USERS").document(currentUser.getUid()).collection("USER_DATA").document("MY_RATINGS")

Поскольку на снимке экрана list_size отображается как 0, это означает, что DBqueries.myRatedIds.size() равно 1. Итак, вы удаляете поля product_ID_1 и rating_1, которые на самом деле не являются / больше не присутствует в документе.

Если вы хотите удалить поля индекса 0, вам также нужно будет использовать DBqueries.myRatedIds.size() - 1 там.

...