【发布时间】:2016-11-05 03:21:43
【问题描述】:
我注意到要使用 Firebase Storage (Google Cloud Storage),我需要提供一个唯一的文件名来上传文件。
然后我计划在 Firebase 实时数据库中保留该存储文件位置(https URL 或 gs URL)的副本,客户端将能够在其中单独读取和下载它
但是,我无法为 Firebase 存储上的文件提供唯一的文件名。在我的情况下,使用 UUID 生成器可能会导致冲突,因为多个客户端正在将图像上传到单个 Firebase 根目录
这是我的计划。我想知道它是否有效
让我们调用我的 firebase 根:聊天室,它由键组成:chatroom_1、chatroom_2 ...chatroom_n
在 chatroom_k 下我有一个名为“Content”的根,它存储由 Firebase 唯一生成的用于存储内容的推送键。每个推送键代表一个内容,但实际内容存储在 Firebase 存储中,名为 URL 的键引用实际内容的 URL。只要存储桶层次结构代表 chatroom_k,Firebase 存储上此内容的文件名是否可以具有相同的随机推送键?
【问题讨论】:
-
如果您的 UUID 生成器为多个调用创建相同的 UUID,我会切换到不同的生成器。但是使用基于推送 ID 的东西也很好:它们本质上是恰好按时间顺序排列的 UUID。
-
如果多个客户端运行相同的 UUID 生成器(比如 IOS 平台提供的任何内容),它们不会冒生成相同 UUID 的风险吗?你有办法使用也可以在客户端定制的 UUID 生成器吗?按键的想法也很棘手。它需要我首先生成一个 Firebase 数据库写入,获取生成写入的密钥,现在写入存储,然后使用 URL 更新数据库
-
嗯,看来 NSUUID 会生成一个全球唯一的 id,这样就解决了我的问题!
标签: firebase firebase-realtime-database firebase-storage