Ich Dummy-Benutzer zu meiner Firebase-DB hinzugefügt und zu Testzwecken versuche ich zu sehen, ob ich nach einem Benutzer in der Datenbank suchen kann.Firebase-Datenbank - Nach vorhandenem Benutzer suchen
Ich schrieb zuerst die createUserToDatabase()
Methode, die perfekt funktioniert. Für die Abfrage von Existenz habe ich die doesUserExist()
Methode geschrieben, aber nach mehrmaliger Ausführung wird keine snapshot
zurückgegeben. Die Methode wird aufgerufen, aber die eigentliche Firebase-Abfrage wird nicht ausgeführt.
Dann entschied ich mich, eine einfache Abfrage für alle Daten zu machen, daher test()
. Zu meiner Überraschung funktioniert das auch nicht, obwohl ich diesen ähnlichen Abfrage-Ansatz für eine andere App verwendet habe und es funktioniert ganz gut. Keiner der drei Ansätze in test()
drucken nichts.
import UIKit
import Firebase
import FirebaseDatabase
struct FirebaseNode
{
static let USERS: String = "Users"
}
class MainViewVC: UIViewController
{
static var userName: String?
var databaseRootRef: FIRDatabaseReference!
let currentUser: User = User.sharedInstance
@IBOutlet weak var userNameLabel: UILabel!
override func viewDidLoad()
{
super.viewDidLoad()
databaseRootRef = FIRDatabase.database().reference()
if let userTitle = MainViewVC.userName
{
userNameLabel.text = userTitle
}
else
{
userNameLabel.text = ""
}
}
override func didReceiveMemoryWarning()
{
super.didReceiveMemoryWarning()
}
@IBAction func createButtonAction(sender: UIButton)
{
test()
}
func doesUserExist()
{
databaseRootRef.child(FirebaseNode.USERS).queryEqualToValue(currentUser.uid).observeSingleEventOfType(.Value) { (snapshot: FIRDataSnapshot) in
if snapshot.exists()
{
print("User exists")
}
else
{
print("User doesn't exist")
}
}
}
func test()
{
databaseRootRef.observeSingleEventOfType(FIRDataEventType.ChildAdded) { (snapshot: FIRDataSnapshot) in
print(snapshot)
}
databaseRootRef.observeEventType(.ChildAdded) { (snapshot: FIRDataSnapshot) in
print(snapshot)
}
databaseRootRef.observeSingleEventOfType(.Value) { (snapshot: FIRDataSnapshot) in
print(snapshot)
}
}
func createUserToDatabase()
{
databaseRootRef.child(FirebaseNode.USERS).child(self.currentUser.uid).setValue(self.currentUser.toAnyObject())
}
}
Dies ist die Struktur meiner Firebase DB
{
"Users":
{
"JglJnGDXcqLq6m844pZ": ---> $uid
{
"userName":"Hello John",
"firstName": "Johnita",
"lastName":"Hernandez",
"email":"[email protected]",
"profileImage": "%uid%.jpeg",
}
}
}
Und das ist mein aktueller Satz von Regeln
{
"rules": {
"Users": {
"$uid": {
".read": "$uid === auth.uid",
".write": "$uid === auth.uid",
".validate": "newData.hasChildren(['email', 'firstName', 'lastName', 'userName'])"
}
}
}
}
kein Fehler überhaupt ausgelöst wird, oder irgendwelche berichteten Auth Probleme.
Jede Hilfe wird sehr geschätzt.
Ich benutze den Simulator nicht. Ich habe es die ganze Zeit am Telefon geführt – eshirima