Firebase的数据翻倍

时间:2017-04-21 15:13:51

标签: swift database firebase login

我遇到的问题如下,当我登录用户并将数据插入数据库时​​,一切正常,但当我关闭部分并再次启动部分时,数据加倍而没有插入任何内容。造成这种情况的原因是什么?

登录方法

@IBAction func loginButton(_ sender: Any) {

    if validar() {

        try! FIRAuth.auth()!.signOut()
        FIRAuth.auth()?.signIn(withEmail: emailTextField.text!, password: passwordTextField.text!, completion: { (user, error) in

            if user != nil {

                self.performSegue(withIdentifier: "loginToPasswordBag", sender: self)

            } else {

                self.emailTextField.shake()
                self.passwordTextField.shake()
            }
        })

    }
}

保存数据方法

@IBAction func addPassword(_ sender: Any) {

    FIRAuth.auth()?.addStateDidChangeListener({ (auth, user) in

        if let user = user {

            var password = [String:String]()
            password["password"] = self.passwordTextField.text!
            password["name"] = self.namePasswordTextField.text!
            password["uid"] = user.uid
            self.rootRef.child("passwords").childByAutoId().setValue(password)

        }
    })

}

当我再次登录时,最后插入的对象在数据库中重复

1 个答案:

答案 0 :(得分:0)

重启应用时,addStateDidChangeListener会触发预期的行为。它还可能在应用程序运行时定期触发。

因此,您不应该依赖addStateDidChangeListener只会在您拨打signInWithEmail时触发的逻辑。