如何在Firebase中获取特定的pushID?

我试图像Instagram一样使用Firebase作为后端,而用户在任何照片中添加评论,新的ID由Firebase生成现在我想添加一个孩子(喜欢)当用户点击这个随机生成的类似按钮时评论ID,但问题是如何获得特定的评论ID?

PIC

有两种方法可以实现这一目标。 因此,如果您想要访问特定注释,您必须知道某些唯一标识pcommentll的内容。 第一种解决方案是在使用push()方法将新注释推送到数据库的确切时刻将随机ID存储在变量中。 要获取该ID,您可以使用以下代码行:

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

如果以后需要使用它,也可以将该id保存在注释对象中。 所以这就是它在代码中的样子:

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

获得此key ,您可以在参考中使用它来更新喜欢的数量。 这种类型的操作通常使用Firebase事务来完成,为此,我建议在这篇文章中看到我的答案,其中我已经解释了如何更新分数属性,但在喜欢的情况下也适用相同的原则。

第二种方法是创建一个全新的顶级集合,如下所示:

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

使用此解决方案,您可以更轻松地查询数据库,以获得您只需要这个简单参考的喜欢数量:

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

尝试这个:

  1. 在存储之前获取commentID,如下所示:

    String CommentId = myRef.push()。getKey();

  2. 将ID与评论数据一起保存:

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

  3. 现在,当您检索注释时,您将拥有每个注释的ID,您可以使用插入所需的注释。