如何在实时数据库中的对象中保存对象,Firebase(kotlin)



我想把数据保存到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 classforuserData模型,如下所示,因为在某些情况下,您将来会有错误。

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

最新更新