java android firebase firebase-realtime-database

java - ¿Cómo obtener pushID específico en Firebase?



android firebase-realtime-database (2)

Estoy tratando de hacer una aplicación como Instagram con Firebase como backend, mientras que el usuario agrega el comentario en cualquier foto, la nueva identificación es generada por Firebase ahora. Quiero agregar un niño (me gusta) cuando el usuario haga clic en el botón "me gusta" de esta forma generada al azar. ID de comentario, pero el problema es cómo obtener esa ID de comentario en particular.


Hay dos maneras en que puede lograr esto. Por lo tanto, si desea acceder a un comentario específico, debe saber algo que identifique ese pcommentll. La primera solución sería almacenar esa identificación aleatoria en una variable en el momento exacto en que está enviando un nuevo comentario a la base de datos utilizando el método push() . Para obtener esa identificación, puedes usar las siguientes líneas de código:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference(); String commentId = rootRef .child(UserId) .child(PhotoId) .child("comments") .push() .getKey();

También puede guardar esa identificación dentro del objeto de comentario si necesita usarla más adelante. Así es como se ve en el código:

Map<String, Object> map = new HashMap<>(); map.put("noOfLikes", 0); map.put("commentId", commentId); rootRef .child(UserId) .child(PhotoId) .child("comments") .child(commentId) .updateChildren(map);

Una vez que tenga esta key , puede usarla en su referencia para actualizar el número de "me gusta". Este tipo de operación generalmente se realiza mediante la transacción Firebase y para eso recomiendo ver mi respuesta de esta post en la que expliqué cómo actualizar una propiedad de puntuación pero el mismo principio es aplicable en el caso de me gusta.

El segundo enfoque sería crear una colección de nivel superior completamente nueva como esta:

Firebase-rot | --- comments | --- commentId | --- noOfLikes: 1

Usando esta solución, será más fácil para usted consultar la base de datos, ya que para obtener la cantidad de "me gusta" solo necesitará esta simple referencia:

DatabaseReference noOfLikesRef = rootRef .child("comments") .child(commentId) .child("noOfLikes"); noOfLikesRef.addListenerForSingleValueEvent(/* ... */);


Prueba esto:

  1. Busque el ID de comentario antes de almacenarlo de esta manera:

    String CommentId = myRef.push (). GetKey ();

  2. Guarde la ID junto con los datos de comentarios:

    myRef.child (CommentId) .set (yourValuesHashMap);

  3. Ahora, cuando recupere los comentarios, tendrá el ID de cada comentario y podrá utilizar para insertar los "me gusta".