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

Posted

技术标签:

【中文标题】如何在 Firebase 中获取特定的 pushID?【英文标题】:How to get specific pushedID in Firebase? 【发布时间】:2019-01-18 03:28:26 【问题描述】:

我正在尝试使用 Firebase 作为后端制作像 Instagram 这样的应用程序,当用户在任何照片中添加评论时,Firebase 会生成新的 ID,现在我想在用户点击喜欢按钮时添加一个孩子(喜欢)这个随机生成的评论 id,但问题是如何获取特定的评论 id?

【问题讨论】:

【参考方案1】:

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

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

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

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);

一旦你有了这个key,你就可以在你的参考中使用它来更新喜欢的数量。这种类型的操作通常使用Firebase transaction 完成,为此我建议查看我的答案 post 在其中我已经解释了如何更新分数属性,但同样的原则适用于喜欢。

第二种方法是像这样创建一个全新的***集合:

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

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

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

【讨论】:

【参考方案2】:

试试这个:

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

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

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

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

    现在,当您检索 cmets 时,您将拥有每条评论的 ID,您可以使用该 ID 插入点赞。

【讨论】:

以上是关于如何在 Firebase 中获取特定的 pushID?的主要内容,如果未能解决你的问题,请参考以下文章

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

如何在 Firebase 实时数据库(Android 开发)中获取特定子项的键值?

如何从 Firebase 获取特定用户的用户名?

如何从 Firebase 数据库中获取特定数据

如何从 OnMarkerClickListener 内的 Firebase 数据库中获取特定值?

如何在 swift 4.0 中获取 firebase-realtime-database 中的特定值