1

Ich habe versucht, alle Einträge, die zu einem Benutzer gehören, durch Vergleichen ihrer UID mit dem UID-Attribut des Eintrags abzurufen.Die Swift-Firebase-Abfrage gibt null zurück, wenn die uid gefiltert wird

ref = FIRDatabase.database().reference() 
self.ref?.child("Entry").queryOrdered(byChild: "uid").queryEqual(toValue: uid).observeSingleEvent(of: .value, with: { [weak self] (snapshot) -> Void in 
     guard let strongSelf = self else { return } 
     print(snapshot) 

Welche

Snap (Entry) <null> 

Derzeit gibt Ich habe diese Datenstruktur:

  • Eintrag

    • KgZkrnjFYXG9zKzfgh5
      • Datum: "31. März 2017"
      • Text: "Test 123"
      • uid: "vKSJm500zCQmy2TTFUgv8FepknF2"
      • wordcount: "6"
  • Benutzer

folgende Regeln:

"Users": { 
    "$uid": { 
    ".write": "!data.exists() || auth.uid === $uid", 
    ".read": "auth !== null" 
    } 
}, 

"Entry":{ 
    ".read" : "auth != null", 
    ".write" : "auth != null", 
    ".indexOn" : "uid" 
} 

Im ein wenig verwirrt, weil, wenn ich versuche, um die Abfrage selbst auszudrucken, erhalte ich

let query = self.ref?.child("Entry").queryOrdered(byChild: "uid").queryEqual(toValue: uid) 
    print("/n") 
    print(query) 

Optional((/Entry { 
ep = "Optional(\"vKSJm500zCQmy2TTFUgv8FepknF2\")"; 
i = uid; 
sp = "Optional(\"vKSJm500zCQmy2TTFUgv8FepknF2\")"; 
})) 

Ich bin mir nicht sicher, was das bedeutet. Sollte ich die Abfrage ändern, um durch die AutoIDs zu gehen, bevor ich es durch uid bestelle?

Antwort

0

Das Problem war nicht die Firebase-Abfrage, es war, wie ich die UID gespeichert habe. Wenn ich durch meine Datenbank query'd, ich wurde mit

Optional(\"vKSJm500zCQmy2TTFUgv8FepknF2\") 

statt

vKSJm500zCQmy2TTFUgv8FepknF2 

Eine schnelle Änderung des optionalen Wert, den es festgelegt.

Verwandte Themen