2012-07-07 2 views
8

Ich bastle mit Firebase und bin neugierig auf die Datenstruktur. Durch das Durchsuchen meiner Datenbank kann Firebase die Struktur und Daten in meiner Datenbank ändern. Aber es scheint, dass Firebase nur Objekte (und Wörterbücher für Listen) unterstützt.JSON-Datenformat in Firebase - werden Arrays unterstützt? Und/Oder, wenn nur Objekte unterstützt werden, können Wörterbücher mit ganzen Zahlen nummeriert werden?

Ich möchte wissen, ob Arrays unterstützt werden. Ich würde auch gerne wissen, ob Dictionary-Elemente mit Ganzzahlen benannt werden können - die Firebase-Schnittstelle fügt nur Strings als Namen ein, was mich besorgt über die Bestellung von Datensätzen macht. Hier

ist eine Probe von json durch Feuerbasis Schnittstelle erstellt:

{ 
"dg":{ 
    "users":{ 
    "rein":{ 
    "searches":{ 
    "0":{ 
     "urls":"http://reinpetersen.com,http://www.reinpetersen.com", 
     "keyphrases":"rein petersen,reinsbrain,programmer turned kitesurfer" 
    } 
    } 
    }, 
    "jacqui":{ 
    "searches":{ 
    "0":{ 
     "urls":"http://www.diving-fiji.com,http://diving-fiji.com", 
     "keyphrases":"diving marine conservation, diving fiji" 
    } 
    } 
    } 
    }, 
    "crawl_list":{ 
    "1":{ 
    "urls":"http://www.diving-fiji.com,http://diving-fiji.com", 
    "keyphrases":"diving marine conservation, diving fiji" 
    }, 
    "0":{ 
    "urls":"http://reinpetersen.com,http://www.reinpetersen.com", 
    "keyphrases":"rein petersen,reinsbrain,programmer turned kitesurfer" 
    } 
    } 
} 
} 

Offensichtlich für meine Listen, möchte ich die Wörterbuch Itemnamen ganze Zahlen sind, so i Sortierung richtig sicherstellen kann.

Antwort

12

Sie können Arrays in Firebase speichern. Zum Beispiel:

var data = new Firebase(...); 
data.set(['x', 'y', 'z']); 

Javascript Arrays sind im Wesentlichen nur Objekte mit numerischen Schlüsseln. Beim Abrufen von Daten erkennen wir automatisch, wenn ein Firebase-Objekt nur numerische Schlüssel enthält, und geben in diesem Fall ein Array zurück.

Beachten Sie, dass zum Speichern einer Liste von Daten, an die viele Personen anhängen können, ein Array keine gute Wahl ist, da mehrere Personen, die in denselben Index im Array schreiben, Konflikte verursachen können. Stattdessen haben wir eine "Push" -Funktion, die eine chronologisch geordnete eindeutige ID für Ihre Daten erstellt.

Wenn Sie das Array zum Bestellen von Daten verwenden möchten, gibt es auch einen besseren Weg, dies mit unseren Prioritäten zu tun. Siehe the docs.

3

Die Firebase-Dokumente haben einen ziemlich guten Abschnitt darüber, wie Sie Ihre Daten bestellen: Ordered Data.

Genau wie JSON-Felder können Firebase-Felder nur mit Strings benannt werden. Es klingt wie das, was Sie suchen, ist setWithPriority(), die sortierbare Prioritätsdaten an Ihre Felder anhängen, oder push(), die garantiert, um Ihre Felder eindeutige Namen zu geben, geordnet chronologisch. (Mehr auf Listen und push()here.)

Sie können auch push() oder set() Arrays. Zum Beispiel

new Firebase("http://gamma.firebase.com/MyUser").push(["cakes","bulldozers"]); 

Ergebnisse in einem Baum wie man erwarten würde, mit MyUser eine eindeutig benannte Kind empfangen, die Kinder und "1":"bulldozers" hat.

Verwandte Themen