In precedenza, Firebase ha richiesto di generare i propri indici o scaricare tutti i dati in un luogo per trovare e recuperare gli elementi che hanno abbinato un certo attributo figlio (ad esempio, tutti gli utenti con name === "Alex"
).
Nell'ottobre 2014, Firebase ha implementato nuove funzionalità di query tramite il metodo orderByChild()
, che consente di eseguire questo tipo di query in modo rapido ed efficiente. Vedere la risposta aggiornata di seguito.
Durante la scrittura di dati su Firebase, sono disponibili diverse opzioni che rifletteranno i diversi casi d'uso. Ad alto livello, Firebase è un archivio dati NoSQL con struttura ad albero, e fornisce alcuni semplici primitive per la gestione di liste di dati:
Scrivi a Firebase con un unico tasto, nota:
ref.child('users').child('123').set({ "first_name": "rob", "age": 28 })
Append a liste con una chiave auto-generata automaticamente che ordina per tempo scritte:
ref.child('users').push({ "first_name": "rob", "age": 28 })
Ascoltare per modifiche nei dati per la sua unica, percorso noto:
ref.child('users').child('123').on('value', function(snapshot) { ... })
Filtro o ordine dati in un elenco di chiave o valore di attributo:
// Get the last 10 users, ordered by key
ref.child('users').orderByKey().limitToLast(10).on('child_added', ...)
// Get all users whose age is >= 25
ref.child('users').orderByChild('age').startAt(25).on('child_added', ...)
Con t Aggiunta di orderByChild()
, non è più necessario creare il proprio indice per le query sugli attributi figlio! Ad esempio, per recuperare tutti gli utenti con il nome di "Alex":
ref.child('users').orderByChild('name').equalTo('Alex').on('child_added', ...)
Engineer presso Firebase qui. Quando scrivi dati in Firebase, hai a disposizione diverse opzioni che rifletteranno i diversi casi d'uso delle applicazioni.Poiché Firebase è un archivio dati NoSQL, è necessario memorizzare gli oggetti dati con chiavi univoche in modo da poter accedere direttamente a quell'elemento o caricare tutti i dati in una determinata posizione e scorrere ciclicamente ciascun elemento per trovare il nodo che si sta cercando per. Vedere Writing Data e Managing Lists per ulteriori informazioni.
Quando si scrivono dati in Firebase, è possibile set
dati utilizzando un unico, percorso definito (cioè a/b/c
), o push
dati in una lista, che genererà un ID univoco (cioè a/b/<unique-id>
) e consentono di ordinare e interrogare gli articoli in quell'elenco per volta. L'ID univoco che stai vedendo sopra viene generato chiamando push
per aggiungere un elemento all'elenco a online-b-cards/users
.
Anziché utilizzare push
qui, si consiglia di utilizzare set
e di memorizzare i dati per ciascun utente utilizzando una chiave univoca, ad esempio l'indirizzo di posta elettronica dell'utente. Quindi puoi accedere direttamente ai dati dell'utente navigando su online-b-cards/users/<email>
tramite l'SDK JS di Firebase. Per esempio:
function escapeEmailAddress(email) {
if (!email) return false
// Replace '.' (not allowed in a Firebase key) with ',' (not allowed in an email address)
email = email.toLowerCase();
email = email.replace(/\./g, ',');
return email;
}
var usersRef = new Firebase('https://online-b-cards.firebaseio.com/users');
var myUser = usersRef.child(escapeEmailAddress('[email protected]'))
myUser.set({ email: '[email protected]', name: 'Alex', phone: 12912912 });
Nota che, dal momento Firebase non consente alcuni caratteri di riferimenti (vedi Creating References), togliamo il .
e sostituiremo con un ,
nel codice sopra.
prova questo: http://stackoverflow.com/questions/32886546/how-to-get-all-child-list-from-firebase-android/36600791#36600791 –