Ich verwende Firestore als mein iOS-Apps-Backend.Schnelle Firestore-Abfrage über Objektschlüssel
Ich habe eine Struktur wie so ...
/users
/userId
name:"Bob"
/likedPosts //this is the object, not a collection
"post1":true
"post2":true
Als Ergebnis - Ich versuche, die ‚likedPosts‘ (Post-Klasse) Profil des Benutzers angezeigt werden soll.
Ich kann nicht herausfinden, wie Sie die Ergebnisse abfragen, um die Benutzer likedPosts zu erhalten und dann abfragen, um jeden Beitrag anzuzeigen.
func getUserNameAndInfo() {
if let user = Auth.auth().currentUser {
// User is signed in
// References to firebase
let userFS = Firestore.firestore().collection("users")
// Set the navigation title to users name
userFS.document(user.uid).getDocument { (document, error) in
if let userInfo = document {
let firstName = userInfo["firstName"] as! String
let lastName = userInfo["lastName"] as! String
let likedPostsDictionary = userInfo.data()["likedPosts"] as! NSDictionary
for (postId, _) in likedPostsDictionary {
self.userLikedPostsArray.append(postId as! String)
print(self.userLikedPostsArray)
}
} else {
print("User name does not exist")
}
}
}
So kann ich alle IDs für die Beiträge bekommen. Aber ich bin verwirrt darüber, wie ich Firestore abfragen könnte, um die Informationen für diese IDs zu erhalten.
Ist dies die einzige Option? Weil mein Denken war - ich habe eine begrenzte Anzahl von Posts - so sagen, es ist 100. So konnte jeder Benutzer nur maximal 100 gemachte Beiträge in ihrem Dokument haben. Wenn ich jedoch die userIds auf dem Post ablege, könnte jeder Post Hunderte, Tausende, Millionen von userId's haben! Kinda macht das Dokument obszön groß – pmanning
Nun, Sie können mit Ihrer aktuellen Struktur fortfahren, aber Sie werden aufgefordert, die Informationen für jeden Beitrag einzeln zu holen. Eine andere Möglichkeit ist, die Daten des Posts in die "likedPosts" des Benutzers zu verteilen, statt nur wahr zu sein - aber nur die Daten, die Sie benötigen, um den Post beispielsweise in einem Feed anzuzeigen. Wenn eine dieser Daten änderbar ist und vom Eigentümer geändert werden kann, haben Sie die Aufgabe, jeden Beitrag in den vom Nutzer gemeldeten Beiträgen zu pflegen. – Callam
hmmm, die Fan-out-Methode scheint interessant. Da es eine begrenzte Anzahl von Posts gibt, die vom Benutzer nicht veränderbar sind und nur kurze Texte sind, könnte dies eine gute Option sein. Werde es ausprobieren. Sonst denke ich, dass ich lieber jeden der Beiträge einzeln holen möchte ... immer noch nicht sicher, wie ich das tun soll – pmanning