Как использовать WriteBatch с хранилищем Firebase? - PullRequest
0 голосов
/ 07 августа 2020

Я использую облачную базу данных Firebase и хранилище firebase. Я использую следующий код, чтобы удалить два документа с помощью WriteBatch:

WriteBatch batch = fireDB.batch();
batch.delete(docRef1);
batch.delete(docRef2);
batch.commit().addOnCompleteListener(new OnCompleteListener<Void>() {

    @Override
    public void onComplete(@NonNull Task<Void> task) {
        // code
    }
});

Я также хочу удалить изображение из хранилища с помощью WriteBatch, что означает, что если один из них не работает, все они не могут быть удалены. У меня есть переменная с именем imageURL, которая содержит URL-адрес изображения в хранилище firebase. Я пробовал:

batch.delete(storage.getStorage().getReferenceFromUrl(imageURL));

Но это не работает, потому что:

'delete (com.google.firebase.firestore.DocumentReference)' в 'com.google.firebase. firestore.WriteBatch 'не может быть применен к' (com.google.firebase.storage.StorageReference) '

Возможно ли это сделать?

1 Ответ

1 голос
/ 07 августа 2020

Невозможно запустить одну операцию для нескольких продуктов Firebase.

Лучшее, что вы можете сделать, это:

  • Выполняйте удаление в порядке, который приводит к наименьшему проблемы для вашего варианта использования. Обычно это означает удаление изображений последними, поскольку наличие потерянного изображения менее разрушительно для приложения, чем наличие висящей ссылки на несуществующее изображение.
  • Напишите надежный код для чтения, который может иметь дело как с потерянным изображением. изображения и висячие ссылки.
  • Выполняйте периодическую c очистку, обычно в облачной функции, избавляясь как от потерянных файлов, так и от зависших ссылок.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...