如何同时完成 Firebase Storage Task 和 Firestore Task?

我正在使用:


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 没有。我想做一些像同步更新这样的事情,它们是原子的:要么所有更新成功,要么所有更新失败。这个怎么做?


紫衣仙女
浏览 134回答 1
1回答

尚方宝剑之说

这些操作跨越不同的服务,甚至可能跨越不同的可用区。没有办法让它们原子化。虽然听从阿里的建议,从客户端回滚绝对可以降低风险,但是没有办法让这些操作原子化。但是到了某个时候就会出现客户端无法回滚的故障对于不可避免的失败,最常见的方法是使您的代码在后面的操作失败时再次变得健壮,并偶尔进行清理。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java