当前位置: 首页 > 面试题库 >

我如何在firebase功能之外访问firebase变量

罗心思
2023-03-14
问题内容

我试图更新类“ var
CurrentStatus:status!”内的变量,状态是一个枚举。我有一个firebase函数,它将更新变量。变量在firebase函数内部获取更新,但不会在firebase函数外部更新变量

class signUpClass:UIViewController {

    // check to see if form is empty

    let ihelpController = UIViewController()
    var CurrentStatus:status!

    func signUp(var formArray: [String:String]) -> status{

        var formStatus:status = ihelpController.checkIfFormIsEmpty(formArray)

        if (formStatus == status.success){
          //form is ok to process
          // check DOB
          //TODO: create date calculation function

            let DateOfBirth:Int = 18

            if DateOfBirth < 18 {
               //user is not 18 they can not register
                alertError("oops", message: "You must be 18 to register", comfirm: "Ok")

            } else {
                //Proceed with registration
                let firebaseController = Firebase()
                var email = "asdf@afd.com"
                var password = "1234"

                firebaseController.refPath("users").createUser(email, password: password, withValueCompletionBlock: {error, result in

                    if error != nil {
                        print("registration Error")
                      self.alertError("oops", message: "That email is registered already", comfirm: "OK")

                    } else {
                        let vc =
                        print("user can register")
                        firebaseController.firebaseRefUrl().authUser(email, password: password, withCompletionBlock:{
                            error, authdata in

                            if error != nil {

                                print("login Error")
                            }else{

                                let userId = firebaseController.firebaseRefUrl().authData.uid

                                formArray["userId"] = userId

                                firebaseController.refPath("users/\(userId)").updateChildValues(formArray)
                                print("user is register and can proceed to dashBoard")

                                //Proceed to dashboard
                                self.CurrentStatus = status.success
                            }

                        })

                    }
                })

            }




        }
       return CurrentStatus

    }

问题答案:

同意杰伊的评论。您无法返回那样的状态,因为Firebases异步工作…我要做的是添加一个闭包参数,该参数在完成时执行,如下所示:

class signUpClass:UIViewController {

// check to see if form is empty

let ihelpController = UIViewController()
var CurrentStatus:status!

func signUp(var formArray: [String:String], complete:(CurrentStatus)->()){

    var formStatus:status = ihelpController.checkIfFormIsEmpty(formArray)

    if (formStatus == status.success){
      //form is ok to process
      // check DOB
      //TODO: create date calculation function

        let DateOfBirth:Int = 18

        if DateOfBirth < 18 {
           //user is not 18 they can not register
            alertError("oops", message: "You must be 18 to register", comfirm: "Ok")

        } else {
            //Proceed with registration
            let firebaseController = Firebase()
            var email = "asdf@afd.com"
            var password = "1234"

            firebaseController.refPath("users").createUser(email, password: password, withValueCompletionBlock: {error, result in

                if error != nil {
                    print("registration Error")
                  self.alertError("oops", message: "That email is registered already", comfirm: "OK")

                } else {
                    let vc =
                    print("user can register")
                    firebaseController.firebaseRefUrl().authUser(email, password: password, withCompletionBlock:{
                        error, authdata in

                        if error != nil {

                            print("login Error")
                        }else{

                            let userId = firebaseController.firebaseRefUrl().authData.uid

                            formArray["userId"] = userId

                            firebaseController.refPath("users/\(userId)").updateChildValues(formArray)
                            print("user is register and can proceed to dashBoard")

                            //Send status to callback to handle
                            complete(status.success)
                        }
                    })
                }
            })
        }
    }
}


 类似资料:
  • 问题内容: 我正在尝试使用Firebase设置CollectionView中的单元格数量。我试图创建一个局部变量,并将其设置为与Firebase变量相同的值,但是当我尝试在函数外部使用它时,它将无法正常工作。我也尝试在ViewWillAppear中设置它,但是没有用。 我设置导航栏标题以查看值。当它在闭包中设置时,我得到了正确的值,当我在闭包外部(在firebase函数之后)写了它时,它的值为0。

  • 我正试图通过谷歌云功能访问和更新我的firebase数据库,但它不起作用。 我已经编写了一个云函数,其中我已经初始化了Firebase-admin。 我必须提供service_account初始化管理。 我正在将我的firebase应用程序初始化为 我在谷歌云功能中没有我的服务帐户路径。 是否有任何方法从GOOGLE云函数访问Firebase? 谢谢

  • 问题内容: 我正在使用新的React Context API而非Redux开发一个新应用,并且在使用之前,例如,当我需要获取用户列表时,我只是调用我的操作,但是现在使用React Context,我的操作可以在内部进行。我的使用者位于我的渲染函数中,这意味着每次调用我的渲染函数时,它将调用我的操作以获取用户列表,这不好,因为我将执行许多不必要的请求。 那么,我怎么只能一次调用动作,例如in 而不是

  • 负责将云功能添加到现有Flatter应用程序。云功能的目标是每隔一段时间运行一次,看看用户帐户在谷歌日历中是否有即将发生的事件。 用户使用Google登录插件创建帐户并登录,然后存储在firebase中。 我已经为GoogleSignIn对象添加了所需的范围 登录过程 此时,Google登录过程将返回一个访问令牌,我已将其存储在firebase中,以供以后在云功能中使用。 我有客户id 现在,我不

  • 问题内容: 我正在开发Spotify应用。我可以登录并获取我的令牌。我的问题是我无法在方法外访问变量。在这种情况下 这是我的方法: 如您所见,我在console.log中记录了名称,并在控制台中获得了正确的值。但是仅在我调用即使返回names变量的情况下得到的函数的情况下,它也可以在这里使用。 我需要那个变量。 问题答案: 没有返回任何东西。你需要从返回的承诺,然后当你回到内 即 它是由外部函数返

  • 环顾四周,尝试通过swift捕获代码,但仍然需要一个函数来触发代码,以获得一个快速帐户连接。 不会在代码尝试上浪费时间,所以请寻找Firebase函数,这些函数将设置条带连接endpoint以进行重定向,并发回代码以完成该过程。 有人愿意帮忙吗? 感谢阅读。