【问题标题】:Firebase is doubling dataFirebase 将数据翻倍
【发布时间】:2017-04-21 15:13:51
【问题描述】:

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

登录方法

@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)

        }
    })

}

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

【问题讨论】:

  • 我不确定我是否理解。但是,当您重新启动应用程序时,addStateDidChangeListener 会触发预期行为。它也可能在应用程序运行时定期触发。所以你不应该依赖addStateDidChangeListener只会在你调用signInWithEmail时触发的逻辑。
  • 哦,我认为你是对的,我想,如果视图发生变化,处理程序将不再触发

标签: swift database firebase login


【解决方案1】:

当您重新启动应用程序时,addStateDidChangeListener 会触发预期行为。它也可能在应用程序运行时定期触发。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多