更新Firebase、AndroidKotlin中的数据

y0u0uwnf  于 2022-11-16  发布在  Kotlin
关注(0)|答案(1)|浏览(148)

我试图更新数据firebase,但它不是一个用户数据,就像它是一个由管理员生成的请求[基本上是一个管理系统],我在这里没有使用uid


下面是我代码

mDatabaseRef = FirebaseDatabase.getInstance().getReference("Reports_uploads")

val upload = Reportsreq(
    name = binding.nameEditText.text.toString().trim { it <= ' ' },
    imageUrl = mImageUri.toString(),
    email = binding.spinneremail.selectedItem.toString().trim(),
    feedback =  binding.descriptionEditText.text.toString().trim { it <= ' ' },
)
val uploadId = mDatabaseRef!!.push().key
mDatabaseRef!!.child((uploadId)!!).setValue(upload)
openImagesActivity()

}
我试图更新这里的反馈,但当更新按钮被点击,它使新的孩子,而不是更新它,我无法得到我设置的关键上传数据。

val intss = intent
//val key = intss.getStringExtra("key")
val email = intss.getStringExtra("Email")
val name  = intss.getStringExtra("Name")
val desT  = intss.getStringExtra("DESCRIT")
val imgT  = intss.getStringExtra("IMGURI")

binding.nameDetailTextView.text =   name
binding.descriptionDetailTextView.text = desT
binding.emailTextView.text = email
binding.teacherDetailImageView.loadImage(imgT)
// binding.keyy.text = key

/* binding.updatebtn.setOnClickListener {

    val update : Reportsreq(
    feedback = feed.toString().trim()
    )*/
val database = FirebaseDatabase.getInstance().getReference("Reports_uploads")
val feed= binding.updatefeedback.text.toString()
binding.updatebtn.setOnClickListener {
    if (feed.isEmpty()){
        //val  mDatabaseRefkey = database
        val key = database.getKey()
        database.child("key").child("feedback").setValue(feed)

        Toast.makeText(this, "updated", Toast.LENGTH_SHORT).show()
    }else {
        Toast.makeText(this, "Feedback not provided", Toast.LENGTH_SHORT).show()
    }

}

这里的主要问题是我如何才能获得密钥,以便我可以从特定节点更新子节点

hwamh0ep

hwamh0ep1#

要更新节点,您需要知道它的密钥。
知道密钥后,更新节点就是一个问题:

database.child("-FmZfoRezMxmCG90se5").child("feedback").setValue("New feedback")

如果不知道密钥,可以使用以下命令更新路径下的所有节点:

database.get().addOnSuccessListener {
    for (nodeSnapshot in it.children) {
        nodeSnapshot.ref.child("feedback").setValue("New feedback")
    }
}.addOnFailureListener{
    Log.e("firebase", "Error getting data", it)
}
  • 最后一个代码段中可能有一些拼写错误。如果有什么地方无法编译,请尝试从错误消息和参考文档中找出原因。*

相关问题