Firebase Push keys как имена файлов хранилища Firebase?

Я заметил, что для использования Firebase Storage (Google Cloud Storage) мне нужно придумать уникальное имя файла для загрузки файла.

Затем я планирую сохранить копию этого местоположения файла хранилища (URL-адрес https или URL-адрес gs) в базе данных Firebase Realtime, где клиенты смогут читать и загружать ее отдельно.

Однако я не могу придумать уникальные имена файлов для файлов, расположенных в хранилище Firebase. В моем случае использование генератора UUID может вызвать коллизии, поскольку несколько клиентов загружают изображения в один корень Firebase.

Вот мой план. Я хотел бы знать, сработает ли это

Назовем мою базу firebase root: Chatrooms, которая состоит из ключей: chatroom_1, chatroom_2 ... chatroom_n

в chatroom_k у меня есть корень с названием «Content», в котором хранятся ключи Push, которые генерируются Firebase для хранения контента. Каждая кнопка push представляет собой контент, но фактическое содержимое хранится в хранилище Firebase, а ключ с именем URL ссылается на URL-адрес фактического содержимого. Может ли имя файла для этого контента в хранилище Firebase иметь тот же случайный ключ Push, если иерархия сегментов представляет chatroom_k?


person 7hacker    schedule 03.07.2016    source источник
comment
Если ваш генератор UUID создает один и тот же UUID для нескольких вызовов, я бы переключился на другой генератор. Но использование чего-то, основанного на push-идентификаторах, тоже нормально: по сути, это UUID, которые оказались упорядоченными в хронологическом порядке.   -  person Frank van Puffelen    schedule 03.07.2016
comment
Если несколько клиентов используют один и тот же генератор UUID (скажем, все, что предоставляется платформой IOS), не рискуют ли они сгенерировать одни и те же UUID? Есть ли у вас способ использовать генератор UUID, который также можно настроить под клиента? Идея с нажатой клавишей тоже непростая. Мне потребуется сначала сгенерировать запись в базу данных Firebase, получить ключ, который сгенерировал запись, теперь записать в хранилище и теперь обновить базу данных с помощью URL-адреса.   -  person 7hacker    schedule 03.07.2016
comment
А, ладно, похоже, что NSUUID сгенерирует глобально уникальный идентификатор, так что это решает мою проблему!   -  person 7hacker    schedule 03.07.2016


Ответы (1)


Я не уверен, что хранилище предоставляет функцию push (), но я могу предложить следующее:

Запросите push () в случайное место в вашей базе данных firebase и используйте этот ключ в качестве имени.

В любом случае вам, вероятно, потребуется сохранить и это имя в базе данных.

В моем приложении у меня есть узел под названием «фотографии», в котором я храню информацию об изображениях, которые я загружаю. Сначала я выполняю push (), чтобы получить новый ключ, и использую этот ключ, чтобы переименовать загруженное изображение в.

Это то, что вам нужно или я что-то неправильно понял?

person user2399432    schedule 07.09.2016
comment
это умное решение. @wrectangle должен принять это как ответ - person Dika; 27.10.2017