首页 > 解决方案 > 如何将 WriteBatch 与 Firebase 存储结合使用?

问题描述

我正在使用 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,其中包含 Firebase 存储中图像的 URL。我试过了:

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

但它不起作用,因为:

“com.google.firebase.firestore.WriteBatch”中的“删除(com.google.firebase.firestore.DocumentReference)”不能应用于“(com.google.firebase.storage.StorageReference)”

有可能吗?

标签: javafirebasegoogle-cloud-firestorefirebase-storage

解决方案


无法跨多个 Firebase 产品运行单个操作。

你能做的最好的事情是:

  • 按照对您的用例造成最少问题的顺序执行删除。通常,这意味着最后删除图像,因为与对不存在图像的悬空引用相比,拥有孤立图像对应用程序的破坏性更小。
  • 为读取编写健壮的代码,可以处理孤立图像和悬空引用。
  • 执行定期清理,通常在云函数中,摆脱孤立文件和悬空引用。

推荐阅读