如何同步Firebase存储和数据库?

时间:2016-07-16 19:22:52

标签: android firebase firebase-realtime-database firebase-storage

我还没有找到任何好的文档来告诉我如何管理这个问题。是否有人可以参考此问题的指导?

对于Android应用,我已经开始使用Google Firebase存储以及我的实时数据库,我对如何确保文件上传和数据库更新以正确的顺序发生有疑问。

以前,我将音频文件编码为字符串,并将其作为单个哈希映射上传到FB数据库以及其他相关数据,以确保一致性。存储的相关数据是与用户可以访问音频的POJO,音频存储在数据库中的路径等等。

我的新设置是首先将音频文件上传到FB存储,并且一旦上传文件,就会触发相关数据的FB数据库更新。数据库侦听器指示完成后,应用程序将移至其他活动。

我担心这两步过程不稳定(用户在两个任务完成之前离开活动,存储上传中断,数据库更新永远不会发生,等等)。如果数据库信息未更新,则其他用户不会收到通知,即音频文件处于联机状态,并且他们无法获得存储在数据库中的引用它的路径。

在新的Google Firebase中构建同步存储和数据库上传的正确顺序是什么?

谢谢, 安迪

2 个答案:

答案 0 :(得分:2)

不确定为什么还没有可靠的答案。无论如何,我遇到了非常类似的问题,并最终使用完成块使用嵌套更新(正如您在问题中描述的那样)。

最近,Firebase引入了云功能。我正在利用它来观察上传的文件,然后使用云功能在FB数据库中创建元数据条目。

基本上,我使用childByAutoId()生成一个用于命名文件的密钥。例如,个人资料照片保存在“gs:// bucket-id / profile_pictures / somerandomkey .jpeg”中。然后,我使用文件名中的密钥,使用云函数在我的FB数据库中创建元数据条目。

我不确定是否有更好的方法,但使用云功能肯定似乎是比嵌套更新方法更好的方法。

答案 1 :(得分:0)

您可以使用Firebase存储上传图片,但您可以获得该图片的可下载网址。然后将所有值放在自定义对象中,包括该图像URL,并将该对象保存在Firebase的RealTime数据库中。 您可以通过从RealTime数据库中检索对象来使用图像URL。