如何同时完成Firebase存储任务和Firestore任务?

时间:2018-11-05 11:24:22

标签: java android firebase google-cloud-firestore firebase-storage

我正在使用:

ref.putFile(file).addOnSuccessListener(taskSnapshot -> {
    ref.getDownloadUrl().addOnSuccessListener(uri -> {
        String downloadUrl = uri.toString();

        Map<String, Object> map = new HashMap<>();
        map.put("profilePic", downloadUrl);
        uidDocRef.update(map);
    });
});

要将图像上传到Firebase存储。成功添加后,我将使用downloadUrl更新用户个人资料。

问题是当我尝试写入Firestore时出现错误。图像被添加,但没有相应的URL。我想做一些类似的同时更新,将其原子化:要么所有更新成功,要么所有更新失败。该怎么做?

1 个答案:

答案 0 :(得分:1)

这些操作跨越不同的服务,甚至可能具有不同的可用性区域。没有办法使它们原子化。

尽管您绝对可以通过听取Ali的建议并从客户那里回滚来降低风险,但是没有办法使这些操作具有原子性。但是在某些时候,客户端无法回滚会失败

不可避免的失败的最常见方法是使您的代码在以后的操作中再次失败,并偶尔执行清理。

另请参阅: