Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Firebase Firestore和云存储:删除数据库条目及其关联文件可能会导致其中一个被实际删除,另一个不会被删除_Android_Firebase_Google Cloud Firestore_Google Cloud Functions_Google Cloud Storage - Fatal编程技术网

Android Firebase Firestore和云存储:删除数据库条目及其关联文件可能会导致其中一个被实际删除,另一个不会被删除

Android Firebase Firestore和云存储:删除数据库条目及其关联文件可能会导致其中一个被实际删除,另一个不会被删除,android,firebase,google-cloud-firestore,google-cloud-functions,google-cloud-storage,Android,Firebase,Google Cloud Firestore,Google Cloud Functions,Google Cloud Storage,如果我的Android应用程序的用户想要删除Firestore DB文档以及由DB文档ID标识的存储在云存储中的相关文件,那么是否可以确保这两个文档都将被删除 事实上,我们可以想象,在与DB文档的删除相关的承诺的情况下,文件的删除可能会失败:在这种情况下,DB条目实际上会被删除,但关联的文件不会被删除。导致Android项目的状态不一致 我怎么做呢 如果我的Android应用程序的用户想要删除Firestore DB文档以及由DB文档ID标识的存储在云存储中的相关文件,那么是否可以确保这两个文档

如果我的Android应用程序的用户想要删除Firestore DB文档以及由DB文档ID标识的存储在云存储中的相关文件,那么是否可以确保这两个文档都将被删除

事实上,我们可以想象,在与DB文档的删除相关的承诺的情况下,文件的删除可能会失败:在这种情况下,DB条目实际上会被删除,但关联的文件不会被删除。导致Android项目的状态不一致

我怎么做呢

如果我的Android应用程序的用户想要删除Firestore DB文档以及由DB文档ID标识的存储在云存储中的相关文件,那么是否可以确保这两个文档都将被删除

如果您认为可以将Firestore删除操作和Firebase存储删除操作添加到批处理操作中,并确保两者同时发生,请注意这是不可能的。这些操作是不同Firebase服务的一部分,您无法将其原子化

不幸的是,Firebase产品都不支持跨产品事务操作。要解决这个问题,您必须在删除操作期间嵌套调用,这意味着如果从FireStore中删除记录时出现错误,则必须从Firebase存储中删除相应的图像。但在某个时间点,会出现客户端无法回滚的故障。对于这些可能发生的不可避免的故障,最常见的方法是通过处理异常使代码健壮,并在Firestore和Firebase存储中偶尔执行清理

如果我的Android应用程序的用户想要删除Firestore DB文档以及由DB文档ID标识的存储在云存储中的相关文件,那么是否可以确保这两个文档都将被删除

如果您认为可以将Firestore删除操作和Firebase存储删除操作添加到批处理操作中,并确保两者同时发生,请注意这是不可能的。这些操作是不同Firebase服务的一部分,您无法将其原子化


不幸的是,Firebase产品都不支持跨产品事务操作。要解决这个问题,您必须在删除操作期间嵌套调用,这意味着如果从FireStore中删除记录时出现错误,则必须从Firebase存储中删除相应的图像。但在某个时间点,会出现客户端无法回滚的故障。对于这些可能发生的不可避免的故障,最常见的方法是通过处理异常使代码健壮,并在Firestore和Firebase存储中偶尔执行清理。

谢谢。这意味着,如果从FireStore中删除记录时未发现错误,则可以从Firebase存储中删除相应的图像:你忘了别忘了吗通过处理异常并在Firestore和Firebase存储这两个地方执行偶尔的清理:我认为用户的客户端Android智能手机不应该这样做,所以我应该将删除代码放入谷歌服务器,例如使用云功能,否?否,例如,尝试在Firestore中写入图片的url时出错,因此操作失败,然后应通过从Firestore中删除图像来回滚操作。在这种情况下,您可以拥有一致的数据。现在可以了吗?谢谢。这意味着,如果从FireStore中删除记录时未发现错误,则可以从Firebase存储中删除相应的图像:你忘了别忘了吗通过处理异常并在Firestore和Firebase存储这两个地方执行偶尔的清理:我认为用户的客户端Android智能手机不应该这样做,所以我应该将删除代码放入谷歌服务器,例如使用云功能,否?否,例如,尝试在Firestore中写入图片的url时出错,因此操作失败,然后应通过从Firestore中删除图像来回滚操作。在这种情况下,您可以拥有一致的数据。现在可以了吗?