对不起,如果我太活跃这些天,但我必须部署一个项目在一周内,我卡住了。我有一个双推的问题,以存储数据在实时数据库与Kotlin。请看图片。我需要存储两个关键值,但是我需要使用两次推送来生成新的孩子。我知道如何保存其中一个键,但不能同时保存两个。我用散列表创建日期,保存后,其中一个键没有正确存储,只是一个随机值。有什么建议吗?
- 编辑:**
所以我真正的问题是comentarioID = referenciaBD. push(). key!!. toString()存储了一些我不需要的键。请看图片,我不知道如何用英语更好地表达
你可以在这里看到我的函数来存储数据:
private fun guardarComentario (uidPostRecibido:String) {
val comentarioMap = HashMap<String, Any>()
referenciaBD = FirebaseDatabase.getInstance().reference.child("Comentarios").child(uidPostRecibido)
comentarioID = referenciaBD.push().key!!.toString()
print(comentarioID)
comentarioMap["comentarioID"]= comentarioID
comentarioMap["publicacionID"]= uidPostRecibido
comentarioMap["contenido"] = binding.etComentario.text.toString()
comentarioMap["creadoPor"] = FirebaseAuth.getInstance().currentUser!!.uid
comentarioMap["fecha"] = LocalDateTime.now().format(DateTimeFormatter.ofPattern("dd-MM-yyyy"))
referenciaBD.push().setValue(comentarioMap).addOnCompleteListener() { task ->
if (task.isSuccessful) {
Toast.makeText(context,"COMENTARIO GUARDADO EN LA BASE DE DATOS CON EXITO",Toast.LENGTH_SHORT).show()
anadirNotifcacion(uidPostRecibido)
binding.etComentario.setText("")
} else {
Toast.makeText(context, "ERROR GUARDANDO EN LA BD", Toast.LENGTH_SHORT).show()
}
}
}
1条答案
按热度按时间3mpgtkmj1#
如果需要将两个按下的键保存到单个字段中,则可以创建如下所示的串联:
这个解决方案用于在同一个String类型字段中保存两个值,现在,要获取两个ID的值,必须读取
::
分隔符左侧的值,然后读取右侧的值。或者,可以将值保存在数组类型的字段中:
另一种解决方案是将两个值都存储在Map中:
无论你选择哪种解决方案,你都必须在
comentarioMap
中根据字段的类型来设置字段,所以它可以是String、List或Map〈String,Any〉。根据你最后的评论:
我需要在comentarioid中存储以.... dyp结尾的密钥,但它开始存储以.... dyo结尾的内容
发生这种情况是因为你调用了
push()
两次,如果你想存储完全相同的密钥,那么不要使用:删除
push()
并使用之前生成的comentarioID
: