【发布时间】: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