简体   繁体   English

Firebase数据库

[英]Firebase DataBase

Problem: For some reason the data is not being sent to my database in firebase. 问题:由于某种原因,数据未发送到Firebase中的数据库。 Can anyone figure out why the information is not being sent? 谁能弄清楚为什么不发送信息?

I highlighted the code with //******** to show where I am sending it. 我用// ********突出显示了代码,以显示发送到的位置。

Rules: 规则:

{
  "rules": {
              ".read": "true",
              ".write": "true"

  }
}

import UIKit
import Firebase
import FirebaseDatabase
import KeychainSwift




class SignUpController: UIViewController {

    //INPUT - from keyboard email & password
    @IBOutlet weak var emailField: UITextField!
    @IBOutlet weak var passwordField: UITextField!

    //Data Base Initialization
    //var ref: FIRDatabaseReference!

    let dataRef = FIRDatabase.database().reference()

    override func viewDidLoad() {
        super.viewDidLoad()


    }

    //PROCESS - Checks is user has already been logged in
    override func viewDidAppear(_ animated: Bool) {

       let currentUser = FIRAuth.auth()?.currentUser

        if currentUser != nil {
            performSegue(withIdentifier: "SignIn", sender: nil)
            }


    }

    func CompleteSignIn(id: String){
        let keyChain = DataService().keyChain
        keyChain.set(id , forKey: "uid")
    }


    //If SignUp button is pressed user will be directed to sign up page
    @IBAction func LoginPressed(_ sender: Any) {
        self.performSegue(withIdentifier: "BackToLogin", sender: nil)
    }





    /*If both password and email contain text lets put them into string variables
       called email & password. Creates user and authorizes sign in                                      */

    @IBAction func SignIn(_ sender: Any){

        if let email = emailField.text, let password = passwordField.text {

            FIRAuth.auth()?.signIn(withEmail: email, password: password) { (user, error) in
                if error == nil {

                    self.CompleteSignIn(id: user!.uid) //Completese Database Sign in
                    //************************************************
                    //Send information to Database
                    let userEmail : String = self.emailField.text!
                    let userPassword : String = self.passwordField.text!
                    let userID : String = user!.uid
                    self.dataRef.child("Users").child(userID).setValue(["Email": userEmail, "Password" : userPassword])
                 //************************************************
                    print("Sign in Test")

                    self.performSegue(withIdentifier: "SignIn", sender: nil)

                } else {
                    FIRAuth.auth()?.createUser(withEmail: email, password: password) { (user, error) in
                        if error != nil {

                            Alerts().invalidSignUpAlert(sender: self) //Alert for invalid email & Password
                            print("cant sign in user") //Programmer Debugging

                        } else {
                            self.CompleteSignIn(id: user!.uid)
                            self.performSegue(withIdentifier: "SignIn", sender: nil)
                        }
                    }
                }
            }
        }
    }
}

You need as Boolean, not as string "true" 您需要使用布尔值,而不是字符串“ true”

{
  "rules": {
              ".read" : true,
              ".write":true

  }
}

Add "Users" in the rules as shown below: 在规则中添加“用户”,如下所示:

"rules": {
  "Users":{
     ".read": "true",
     ".write": "true"
  }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM