es gibt eine Reihe von Lösungen und oft alle Benutzerdaten drucken bekommen Laden zu viele Daten ist.
Hier ist ein typischer Benutzer Knoten
users
uid_0
name: "Jean Luc"
uid_1
name: "Will"
uid_2
name: "Geordi"
Eine Möglichkeit ist durch die einzelnen Benutzerknoten, einer nach dem anderen zu durchlaufen, um den Benutzernamen abzurufen. Dies vermeidet einen enormen Datensatz vollständig. Wir werden das .childAdded Ereignis verwenden, jeden und Speicher in einem Array zu laden
let usersRef = self.ref.child("users")
var userNamesArray = [String]()
usersRef.observe(.childAdded, with: { snapshot in
let userDict = snapshot.value as! [String: Any]
let name = userDict["name"] as! String
userNamesArray.append(name)
})
Eine zweite Möglichkeit, die Benutzername in einem ganz anderen Knoten zu speichern, die deutlich die ‚Unordnung‘, wie der Rest der reduziert Daten bleiben in den Hauptnutzer Knoten
user_names
uid_0: "Jean Luc"
uid_1: "Will"
uid_2: "Geordi"
Wie Sie mit dieser Struktur sehen können, auch mit Tausenden von Namen nur mit einem sehr kleinen Stellfläche Text es.
Eine weitere Option besteht darin, die X-Anzahl von Benutzern gleichzeitig mithilfe von .startingAt und .endingAt zu laden und die zurückgegebenen Benutzer zu durchlaufen, um die einzelnen Namen abzurufen. In diesem Fall wollen wir alle Benutzer, die mit A beginnen und mit M enden ... Sorry Worf.
let usersRef = self.ref.child("users")
var userNamesArray = [String]()
let nameQuery = usersRef.queryOrdered(byChild: "name")
.queryStarting(atValue: "A")
.queryEnding(atValue: "M\u{f8ff}")
nameQuery.observe(.value, with: { snapshot in
for child in snapshot.children {
let snap = child as! DataSnapshot
let userDict = snap.value as! [String: Any]
let name = userDict["name"] as! String
userNamesArray.append(name)
}
})
Das letzte Beispiel begann mit Benutzer-Namen mit A beginnt und endet mit Benutzernamen mit M Endung + eine sehr hohe Unicode-Zeichen, die für alle Namen beginnend mit M es inklusive macht
Die \ Das in der obigen Abfrage verwendete uf8ff-Zeichen ist ein sehr hoher Codepunkt im Unicode-Bereich. Da es nach den meisten regulären Zeichen in Unicode ist, stimmt die Abfrage mit allen Werten überein, die mit queryString beginnen.
1) Ihre Frage ist zu weit. 2) Zeigen Sie Ihre Versuche. 3) alle Ihre Fragen sind einfach zu google. gl –
@VladPulichev Ich habe die Frage ein wenig bearbeitet. Auch wenn Sie mich auf Ressourcen hinweisen könnten, die großartig wären. – Stefan