2016-07-03 16 views
1

Mir ist aufgefallen, dass ich zur Verwendung von Firebase Storage (Google Cloud Storage) einen eindeutigen Dateinamen zum Hochladen einer Datei erstellen muss.Firebase Push-Tasten als Firebase Storage-Dateinamen?

Ich plane, dann eine Kopie dieses Storage-Datei Standort zu halten (https-URL oder gs URL) in der Firebase Realtime-Datenbank, wo die Kunden in der Lage sein werden, um es separat zu lesen und herunterladen

Allerdings bin ich nicht in der Lage zu Erstelle eindeutige Dateinamen für die Dateien, die sich auf Firebase Storage befinden. einen UUID-Generator verwendet, kann Kollisionen in meinem Fall führen, da einige Kunden mein Plan Hochladen werden ist Bilder zu einer einzigen Firebase Wurzel

hier. Ich würde gerne wissen, ob es funktionieren wird

Läßt meine Feuerbasis Wurzel nennen: Chatrooms, die von Schlüsseln besteht: chatroom_1, chatroom_2 ... chatroom_n

unter chatroom_k Ich habe eine Wurzel „Inhalt“ genannt, die speichert Push-Tasten, die von Firebase zum Speichern von Inhalten einmalig generiert wurden. Jede Drucktaste stellt einen Inhalt dar, aber der eigentliche Inhalt wird in Firebase Storage gespeichert und ein Schlüssel namens URL verweist auf die URL des tatsächlichen Inhalts. Kann der Dateiname für diesen Inhalt im Firebase-Speicher den gleichen randomisierten Push-Schlüssel haben, solange die Bucket-Hierarchie für chatroom_k steht?

+1

Wenn Ihr UUID-Generator ist die gleiche UUID für mehrere Anrufe zu schaffen, würde ich auf einen anderen Generator wechseln. Aber es ist auch gut, etwas auf Basis von Push-IDs zu verwenden: Sie sind im Wesentlichen UUIDs, die zufällig chronologisch geordnet sind. –

+0

Wenn mehrere Clients denselben UUID-Generator ausführen (sagen Sie, was von der IOS-Plattform bereitgestellt wird), besteht nicht das Risiko, dass dieselben UUIDs generiert werden? Können Sie einen UUID-Generator verwenden, der auch auf Client-Basis angepasst werden kann? Die Push-Key-Idee ist auch schwierig. Es erfordert, dass ich zuerst eine Firebase-Datenbank schreibe, den Schlüssel, der den Schreibvorgang generiert hat, jetzt in den Speicher schreibe und die Datenbank jetzt mit der URL – wrecktangle

+0

aktualisiere. Ah, es scheint, dass NSUUID eine global eindeutige ID erzeugt, die sich löst mein Problem! – wrecktangle

Antwort

4

Ich bin nicht sicher, ob Speicher-Push() Funktion, sondern ein Vorschlag wäre folgend:

anfordern push() an einen beliebigen Ort auf Ihre Datenbank und Feuerbasis verwenden Sie diesen Schlüssel für einen Namen.

Auf jeden Fall werden Sie wahrscheinlich auch diesen Namen in der Datenbank speichern müssen.

In meiner Anwendung habe ich einen Knoten „Fotos“ und dort lagere ich die Informationen über die Bilder, die ich hochladen. Ich mache zuerst einen Push(), um einen neuen Schlüssel zu bekommen, und benutze diesen Schlüssel, um das hochgeladene Bild umzubenennen.

Ist das, was Sie brauchen, oder ich etwas falsch verstanden?

+0

Dies ist eine clevere Lösung. @wrectangle sollte dies als Antwort akzeptieren – Dika