我想把数据保存到Firebase的实时数据库中,但遇到了一个问题。我只与Kotlin合作了1个月,不幸的是,我不知道如何以这种形式将数据保存到实时数据库中,如图所示。
我当前的代码是:
data class userData(
val username: String,
val uid: String,
)
database = FirebaseDatabase.getInstance().getReference("Userdata")
val user = uid?.let {
userData("Test1", it)
}
if (uid != null) {
database.child(uid).setValue(user).addOnSuccessListener {
Toast.makeText(this, "Success saved", Toast.LENGTH_LONG).show()
}.addOnFailureListener {
Toast.makeText(this, "Failed", Toast.LENGTH_LONG).show()
}
}
我的数据库。同样的方式,我希望能够与Kotlin一起保存它https://i.stack.imgur.com/fbAsC.png
问题是,我不知道如何将数据对象保存到数据库中,有简单的方法吗?
我建议您改进data class
foruserData
模型,如下所示,因为在某些情况下,您将来会有错误。
data class userData(
val username: String? = null,
val uid: String? = null,
)
要回答您的问题,您需要为data
模型创建一个新的data class
,如下所示。
data class UserDataExtra(
val banned: Boolean? = null
)
接下来,您只需要在addOnSuccessListener
中实现如下。
if (uid != null) {
database.child(uid).setValue(user).addOnSuccessListener {
//Here you will update new model for userDataExtra
val userExtra = UserDataExtra (false)
database.child(uid).child("UserDataExtra").setValue(userExtra )..addOnSuccessListener {
Toast.makeText(this, "Success saved with data extra!", Toast.LENGTH_LONG).show()
}
}.addOnFailureListener {
Toast.makeText(this, "Failed", Toast.LENGTH_LONG).show()
}
}
获取数据库实例:
val database=Firebase.database.reference
写入数据库的调用:
database.child("UserData").child(uid).setValue(user)
从数据库中读取一次:
database.child("UserData").child(uid).get().addOnSuccessListener {
Log.i("firebase", "Got value ${it.value}")
}.addOnFailureListener{
Log.e("firebase", "Error getting data", it)
}
这篇文章提供了您想要的解决方案
https://firebase.google.com/docs/database/android/read-and-write?hl=en&authuser=0#读取数据
还可以监听数据库中的更改,并相应地更新上面文章中提到的内容。
我想您忘记了告诉数据库中的表名。您应该尝试使用database.child(tableName).child(uid).setValue(user)
然后addOnSuccessListener