2012-07-07 7 views
8

Sto armeggiando con Firebase e curioso sulla struttura dei dati. Navigando nel mio database, firebase mi consente di modificare la struttura e i dati nel mio database. Ma sembra che Firebase supporti solo oggetti (e dizionari per liste).json data format in firebase - gli array sono supportati? E/O, se sono supportati solo oggetti, i dizionari possono essere numerati con numeri interi?

Voglio sapere se gli array sono supportati. Vorrei anche sapere se gli elementi del dizionario possono essere denominati con numeri interi: l'interfaccia Firebase inserisce solo stringhe come nomi, cosa che mi preoccupa di ordinare i record.

Ecco un esempio di JSON creata attraverso l'interfaccia Firebase:

{ 
"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" 
    } 
    } 
} 
} 

Ovviamente, per le mie liste, voglio i nomi degli elementi del dizionario per essere numeri interi in modo posso assicurare ordinamento è corretta.

risposta

12

È possibile salvare gli array in Firebase. Ad esempio:

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

Javascript Le matrici sono essenzialmente solo oggetti con tasti numerici. Quando recuperiamo i dati, rileviamo automaticamente quando un oggetto Firebase ha solo chiavi numeriche e restituiamo un array se questo è il caso.

Si noti che per la memorizzazione di un elenco di dati a cui possono essere aggiunte molte persone, un array non è una buona scelta, poiché più persone che scrivono sullo stesso indice nell'array possono causare conflitti. Invece, abbiamo una funzione "push" che crea un ID univoco ordinato cronologicamente per i tuoi dati.

Inoltre, se si intende utilizzare l'array come metodo per ordinare i dati, c'è un modo migliore per farlo utilizzando le nostre priorità. Vedi the docs.

3

I documenti di Firebase hanno una sezione molto buona su come ordinare i dati: Ordered Data.

Proprio come i campi JSON, i campi Firebase possono essere denominati solo con stringhe. Sembra che quello che stai cercando sia setWithPriority(), che allega i dati di priorità ordinabili ai tuoi campi, oppure push(), che è garantito per dare nomi unici ai tuoi campi, ordinati cronologicamente. (Maggiori informazioni su elenchi e push()here.)

È inoltre possibile push() o set() array. Ad esempio,

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

risultati in un albero come ci si aspetterebbe, con MyUser la ricezione di un bambino di nome univoco con figli e "1":"bulldozers".