Zuvor Firebase erforderlich Sie Ihre eigene Indizes oder Download zu generieren alle Daten an einer Stelle, Elemente zu finden und abzurufen, die einige Kind Attribut angepasst (zum Beispiel alle Benutzer mit name === "Alex"
).
Im Oktober 2014 hat Firebase neue Abfragefunktionen über die Methode orderByChild()
eingeführt, mit der Sie diese Art von Abfrage schnell und effizient durchführen können. Siehe die aktualisierte Antwort unten.
Beim Schreiben von Daten in Firebase stehen Ihnen verschiedene Optionen zur Verfügung, die verschiedene Anwendungsfälle widerspiegeln. Auf einem hohen Niveau, ist Firebase eine Baumstruktur NoSQL-Datenspeicher und bietet ein paar einfache Grundelemente für die Listen der Datenverwaltung:
schreiben mit einem einzigartigen, bekannten Schlüssel zur Feuerbasis:
ref.child('users').child('123').set({ "first_name": "rob", "age": 28 })
anfügen auf Listen mit einem automatisch generierten Schlüssel, der automatisch sortieren geschrieben von Zeit:
ref.child('users').push({ "first_name": "rob", "age": 28 })
Hören für Änderungen in Daten durch seinen einzigartigen, bekannt Pfad:
ref.child('users').child('123').on('value', function(snapshot) { ... })
Filter oder um Daten in einer Liste von Schlüsseln oder Attributwert:
// 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', ...)
Mit t Der Zusatz von orderByChild()
, Sie müssen nicht mehr Ihren eigenen Index für Abfragen auf Kind-Attribute erstellen! Um zum Beispiel alle Benutzer mit dem Namen "Alex" abzurufen:
ref.child('users').orderByChild('name').equalTo('Alex').on('child_added', ...)
Engineer bei Firebase hier. Beim Schreiben von Daten in Firebase stehen Ihnen verschiedene Optionen zur Verfügung, die verschiedene Anwendungsfälle widerspiegeln.Da Firebase ein NoSQL-Datenspeicher ist, müssen Sie Ihre Datenobjekte entweder mit eindeutigen Schlüsseln speichern, damit Sie direkt auf dieses Element zugreifen können, oder alle Daten an einem bestimmten Speicherort laden und jedes Element durchlaufen, um den gesuchten Knoten zu finden zum. Weitere Informationen finden Sie unter Writing Data und Managing Lists.
Wenn Sie schreiben Daten in Firebase, können Sie entweder set
Daten einen eindeutigen definierten Pfad (dh a/b/c
), oder push
Daten in eine Liste, die eine eindeutige ID generieren (dh a/b/<unique-id>
) und ermöglicht es Ihnen, zu sortieren und zu Abfrage der Elemente in dieser Liste nach Zeit. Die eindeutige ID, die Sie oben sehen, wird generiert, indem Sie push
aufrufen, um ein Element an die Liste um online-b-cards/users
anzufügen.
Anstatt hier push
zu verwenden, würde ich empfehlen, set
zu verwenden und die Daten für jeden Benutzer mit einem eindeutigen Schlüssel wie der E-Mail-Adresse des Benutzers zu speichern. Dann können Sie direkt auf die Daten des Benutzers zugreifen, indem Sie über das Firebase JS SDK zu online-b-cards/users/<email>
navigieren. Zum Beispiel:
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 });
Beachten Sie, dass seit Firebase bestimmte Zeichen in den Referenzen nicht erlaubt (siehe Creating References), wir die .
und ersetzen sie durch eine ,
in dem obigen Code entfernen.
versuchen Sie dies: http://stackoverflow.com/questions/32886546/how-to-get-all-child-list-from-firebase-android/36600791#36600791 –