java - 如何将 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)”
有可能吗?
解决方案
无法跨多个 Firebase 产品运行单个操作。
你能做的最好的事情是:
- 按照对您的用例造成最少问题的顺序执行删除。通常,这意味着最后删除图像,因为与对不存在图像的悬空引用相比,拥有孤立图像对应用程序的破坏性更小。
- 为读取编写健壮的代码,可以处理孤立图像和悬空引用。
- 执行定期清理,通常在云函数中,摆脱孤立文件和悬空引用。
推荐阅读
- python - 如何创建具有多个相同随机元素的 Python 列表?
- sql - 如何仅返回 SQL 查询中的最早日期但包含其他列?
- javascript - Gulp:您是否忘记发出异步完成错误信号
- javascript - 如何避免 about:blank#blocked with window.location?
- flutter - 需要一个“ProductList”类型的值,但得到一个“_Future”类型的值
' - mysql - 从下拉列表Nodejs中选择的值查询数据库
- delphi - 没有收到使用 Indy 发送的 JSON,因为它是由 Stripe API 发送的
- flutter - 如何从我的 Flutter PWA 飞镖代码注册后台同步
- python - 零的numpy处理:区分-0和0
- c# - 如何在 ASP.NET MVC 中使用部分视图使用多个列表