【问题标题】:Realtime Database not updating // Firebase Data not Updating in Kotlin实时数据库未更新 // 在 Kotlin 中未更新 Firebase 数据
【发布时间】:2022-01-07 06:03:48
【问题描述】:

这是问题所在:

这些是我在 Firebase 中设置的规则:

Firebase 中的当前用户:

当我创建一个新用户时,它应该在 Firebase Realtime DB 中更新。 但在这种情况下,这无济于事。 我什至将读取、写入规则更改为 true,它没有帮助并且一直显示为 null。

//下面的代码//

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_sign_up)
    supportActionBar?.hide()

    mAuth = FirebaseAuth.getInstance()
    edtName =findViewById(R.id.edt_name)
    edtEmail =findViewById(R.id.edt_email)
    edtPassword =findViewById(R.id.edt_password)
    btnSignUp =findViewById(R.id.btn_signup)

    btnSignUp.setOnClickListener{
        val name = edtName.text.toString()
        val email = edtEmail.text.toString()
        val password = edtPassword.text.toString()

        signUp(name, email,password)

    }
}
private fun signUp(name:String, email: String,password: String){
    //logic for signup

    mAuth.createUserWithEmailAndPassword(email, password)
        .addOnCompleteListener(this) { task ->
            if (task.isSuccessful) {
                //going homE
                addUserToDatabase(name, email, mAuth.currentUser?.uid!!)

                val intent= Intent(this@SignUp, MainActivity::class.java)
                startActivity(intent)

            } else {
                Toast.makeText(this@SignUp, "Some Error occurred", Toast.LENGTH_SHORT).show()

            }
        }

}
private fun addUserToDatabase(name:String, email:String, uid:String){
    mDbRef=FirebaseDatabase.getInstance().getReference()

    mDbRef.child("user").child(uid).setValue(User(name, email, uid))

}

}

//用户类代码//

package com.example.mychat

class User {
   var name : String? = null
   var email : String? = null
   var uid : String? = null

   constructor(){}

   constructor(name:String?, email:String?, uid:String?){
     this.name= name
     this.email=email
     this.uid=uid
   }


 }

【问题讨论】:

  • “用户”类在哪里?
  • firebase.google.com/docs/reference/android/com/google/firebase/… "此外,您可以将自己的类的实例设置到此位置,前提是它们满足以下约束: 类必须具有不带参数的默认构造函数 类必须定义 public要分配的属性的 getter。反序列化实例时,没有公共 getter 的属性将设置为其默认值"
  • 这能回答你的问题吗? Writing a Custom Object to Firebase Database
  • @SujalKumar 更新了用户类代码。
  • 我对 Kotlin 不太熟悉,但正如 @TylerQI 所提到的,您需要为每个属性创建公共 getter 和 setter。

标签: android firebase kotlin firebase-realtime-database


【解决方案1】:

如果您既没有收到完成也没有收到错误侦听器,您是否在首次访问控制台中的数据库之前下载了您的 google-services.json?在这种情况下,该文件可能不包含 SDK 需要的数据库引用。要解决此问题,请从您的项目中下载一个新的 google-service.json 并在您的应用中使用它,或者在 mDbRef=FirebaseDatabase.getInstance("URL here").getReference(). 中的代码中指定数据库 URL

@Frank van Puffelen 的这个解决方案奏效了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-04
    • 1970-01-01
    • 2021-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    相关资源
    最近更新 更多